diff --git a/backend/src/entities/cron-jobs/cron-jobs.service.ts b/backend/src/entities/cron-jobs/cron-jobs.service.ts index e5b93a743..2d0c41078 100644 --- a/backend/src/entities/cron-jobs/cron-jobs.service.ts +++ b/backend/src/entities/cron-jobs/cron-jobs.service.ts @@ -127,15 +127,21 @@ export class CronJobsService { } } - private async sendEmailResultsToSlack(results: Array): Promise { + private async sendEmailResultsToSlack(results: Array): Promise { + const filteredResults = results.filter((result) => !!result); + const nullResultsCount = results.length - filteredResults.length; const chunkSize = 20; - for (let i = 0; i < results.length; i += chunkSize) { - const chunk = results.slice(i, i + chunkSize); + for (let i = 0; i < filteredResults.length; i += chunkSize) { + const chunk = filteredResults.slice(i, i + chunkSize); const message = this.emailCronResultToSlackString(chunk); if (!message) { continue; } await slackPostMessage(message, Constants.EXCEPTIONS_CHANNELS); } + if (nullResultsCount > 0) { + const timedOutMessage = `The system timed out while sending results to ${nullResultsCount} email addresses.`; + await slackPostMessage(timedOutMessage, Constants.EXCEPTIONS_CHANNELS); + } } } diff --git a/backend/src/entities/email/email/email.service.ts b/backend/src/entities/email/email/email.service.ts index d7726e90f..fe0270a7c 100644 --- a/backend/src/entities/email/email/email.service.ts +++ b/backend/src/entities/email/email/email.service.ts @@ -78,7 +78,7 @@ export class EmailService { return await this.sendEmailToUser(letterContent); } - public async sendRemindersToUsers(userEmails: Array): Promise> { + public async sendRemindersToUsers(userEmails: Array): Promise> { const queue = new PQueue({ concurrency: 8 }); const mailingResults: Array = await Promise.all( userEmails.map(async (email: string) => { @@ -229,7 +229,7 @@ export class EmailService { return await this.emailTransporterService.transportEmail(emailMessage); } - private async sendReminderToUser(email: string): Promise { + private async sendReminderToUser(email: string): Promise { const letterContent: IMessage = { from: this.emailFrom, to: email, @@ -272,19 +272,19 @@ export class EmailService { }); } - private buildMailingResults(results: Array): Array { - return results - .map((result) => { - if (!result) { - return; - } - const { messageId, accepted, rejected } = result; - return { - messageId: messageId ? messageId : undefined, - accepted: accepted ? accepted : undefined, - rejected: rejected ? rejected : undefined, - }; - }) - .filter((result) => !!result); + private buildMailingResults( + results: Array, + ): Array { + return results.map((result) => { + if (!result) { + return null; + } + const { messageId, accepted, rejected } = result; + return { + messageId: messageId ? messageId : undefined, + accepted: accepted ? accepted : undefined, + rejected: rejected ? rejected : undefined, + }; + }); } }