aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/services/file-cache.ts16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/services/file-cache.ts b/src/services/file-cache.ts
index b99c8c6..e82b705 100644
--- a/src/services/file-cache.ts
+++ b/src/services/file-cache.ts
@@ -10,7 +10,7 @@ import debug from '../utils/debug.js';
@injectable()
export default class FileCacheProvider {
- private static readonly evictionQueue = new PQueue({concurrency: 1});
+ private readonly evictionQueue = new PQueue({concurrency: 1});
private readonly config: Config;
constructor(@inject(TYPES.Config) config: Config) {
@@ -70,7 +70,7 @@ export default class FileCacheProvider {
}
}
- this.evictOldestIfNecessary();
+ await this.evictOldestIfNecessary();
});
return stream;
@@ -83,14 +83,16 @@ export default class FileCacheProvider {
*/
async cleanup() {
await this.removeOrphans();
- this.evictOldestIfNecessary();
+ await this.evictOldestIfNecessary();
}
- private evictOldestIfNecessary() {
- if (FileCacheProvider.evictionQueue.size === 0 && FileCacheProvider.evictionQueue.pending === 0) {
+ private async evictOldestIfNecessary() {
+ if (this.evictionQueue.size === 0 && this.evictionQueue.pending === 0) {
debug('Adding evictOldest task to queue');
- void FileCacheProvider.evictionQueue.add(this.evictOldest.bind(this));
+ void this.evictionQueue.add(this.evictOldest.bind(this));
}
+
+ return this.evictionQueue.onEmpty();
}
private async evictOldest() {
@@ -115,7 +117,7 @@ export default class FileCacheProvider {
// Continue to evict until we're under the limit
debug('Scheduling another eviction');
- void FileCacheProvider.evictionQueue.add(this.evictOldest.bind(this));
+ void this.evictionQueue.add(this.evictOldest.bind(this));
}
debug('Finished evictOldest');