Guard startup scheduler calls against unhandled promise rejections; v2.0.42
Publish Container / docker (push) Successful in 14m48s
Publish Container / docker (push) Successful in 14m48s
Replace bare `void fn()` with `fn().catch(err => console.error(...))` for all four startup-time scheduler invocations so an unexpected rejection cannot crash the Node.js process (which exits on unhandled rejections in v15+). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
8ba300eddc
commit
6621c45be8
2 files changed
+13
-5
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "siteforge",
|
"name": "siteforge",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.0.41",
|
"version": "2.0.42",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -191,7 +191,9 @@ Promise.all([
|
|||||||
console.error('[study-reminders] failed to schedule reminders:', err)
|
console.error('[study-reminders] failed to schedule reminders:', err)
|
||||||
})
|
})
|
||||||
}, 60 * 60 * 1000)
|
}, 60 * 60 * 1000)
|
||||||
void scheduleStudyReminders(sendStudyReminderEmail)
|
scheduleStudyReminders(sendStudyReminderEmail).catch(err => {
|
||||||
|
console.error('[study-reminders] failed to schedule reminders:', err)
|
||||||
|
})
|
||||||
|
|
||||||
// Send re-engagement emails to inactive study users every hour
|
// Send re-engagement emails to inactive study users every hour
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
@@ -199,7 +201,9 @@ Promise.all([
|
|||||||
console.error('[study-reengagement] failed to schedule emails:', err)
|
console.error('[study-reengagement] failed to schedule emails:', err)
|
||||||
})
|
})
|
||||||
}, 60 * 60 * 1000)
|
}, 60 * 60 * 1000)
|
||||||
void scheduleReengagementEmails(sendStudyReengagementEmail)
|
scheduleReengagementEmails(sendStudyReengagementEmail).catch(err => {
|
||||||
|
console.error('[study-reengagement] failed to schedule emails:', err)
|
||||||
|
})
|
||||||
|
|
||||||
// Send weekly lesson digest emails every hour (only actually fires every 7 days per user)
|
// Send weekly lesson digest emails every hour (only actually fires every 7 days per user)
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
@@ -207,7 +211,9 @@ Promise.all([
|
|||||||
console.error('[study-digest] failed to schedule weekly digest:', err)
|
console.error('[study-digest] failed to schedule weekly digest:', err)
|
||||||
})
|
})
|
||||||
}, 60 * 60 * 1000)
|
}, 60 * 60 * 1000)
|
||||||
void scheduleWeeklyDigestEmails(sendStudyWeeklyDigestEmail)
|
scheduleWeeklyDigestEmails(sendStudyWeeklyDigestEmail).catch(err => {
|
||||||
|
console.error('[study-digest] failed to schedule weekly digest:', err)
|
||||||
|
})
|
||||||
|
|
||||||
// Check for a scheduled series transition every hour
|
// Check for a scheduled series transition every hour
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
@@ -215,7 +221,9 @@ Promise.all([
|
|||||||
console.error('[series-scheduler] error:', err)
|
console.error('[series-scheduler] error:', err)
|
||||||
})
|
})
|
||||||
}, 60 * 60 * 1000)
|
}, 60 * 60 * 1000)
|
||||||
void runScheduledSeriesTransition()
|
runScheduledSeriesTransition().catch(err => {
|
||||||
|
console.error('[series-scheduler] error:', err)
|
||||||
|
})
|
||||||
|
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, () => {
|
||||||
logResendEmailAlignmentWarnings()
|
logResendEmailAlignmentWarnings()
|
||||||
|
|||||||
Reference in new issue
Block a user