diff --git a/src/mail-scheduler/index.ts b/src/mail-scheduler/index.ts index 68f22f417..31c773556 100644 --- a/src/mail-scheduler/index.ts +++ b/src/mail-scheduler/index.ts @@ -62,7 +62,9 @@ export async function main() { main() .then(() => { console.log('Email delivery finished') + process.exit(0) }) .catch((err) => { console.error('Email delivery failed', err) + process.exit(1) }) diff --git a/src/server-extension/resolvers/AssetsResolver/index.ts b/src/server-extension/resolvers/AssetsResolver/index.ts index cbb715095..9d13f36bd 100644 --- a/src/server-extension/resolvers/AssetsResolver/index.ts +++ b/src/server-extension/resolvers/AssetsResolver/index.ts @@ -29,16 +29,18 @@ export class DistributionBucketsCache { this.logger = rootLogger.child('buckets-cache') } - public init(intervalMs: number): void { + public async init(intervalMs: number): Promise { this.logger.info(`Initializing distribution buckets cache with ${intervalMs}ms interval...`) - this.updateLoop(intervalMs) - .then(() => { - /* Do nothing */ - }) - .catch((err) => { - console.error(err) - process.exit(-1) + try { + await new Promise((resolve) => { + this.updateLoop(intervalMs, resolve).catch((err) => { + throw err + }) }) + } catch (err) { + console.error(err) + process.exit(-1) + } } public getBucketsByBagId(bagId: string): DistributionBucketCachedData[] { @@ -49,8 +51,10 @@ export class DistributionBucketsCache { }) } - private async updateLoop(intervalMs: number): Promise { + private async updateLoop(intervalMs: number, onFirstRun: () => void): Promise { this.em = await globalEm + let isFirstRun = true + while (true) { try { this.logger.debug('Reloading distribution buckets and bags cache data...') @@ -63,6 +67,11 @@ export class DistributionBucketsCache { ) this.logger.debug(`Buckets cached: ${this.bucketsById.size}`) this.logger.debug(`Bags cached: ${this.bucketIdsByBagId.size}`) + + if (isFirstRun) { + isFirstRun = false + onFirstRun() + } } catch (e) { this.logger.error(`Cannot reload the cache: ${e instanceof Error ? e.message : ''}`) } diff --git a/src/server-extension/resolvers/AssetsResolver/utils.ts b/src/server-extension/resolvers/AssetsResolver/utils.ts index d2c9c00dd..d80f0bf19 100644 --- a/src/server-extension/resolvers/AssetsResolver/utils.ts +++ b/src/server-extension/resolvers/AssetsResolver/utils.ts @@ -21,7 +21,7 @@ export async function getAssetUrls( if (!distributionBucketsCache) { distributionBucketsCache = new DistributionBucketsCache() - distributionBucketsCache.init(6000) + await distributionBucketsCache.init(6000) } const buckets = distributionBucketsCache.getBucketsByBagId(bagId)