Background job failures are logged and retried
Why it matters
Background jobs that fail silently — especially those processing payments, sending billing notifications, or syncing shared data — can fail for hours before anyone notices. CWE-391 (Unchecked Error Condition) applies directly: a Vercel Cron route that throws without a try/catch produces no log and no retry path. CWE-778 (Insufficient Logging) applies when errors are caught but not recorded. ISO 25010 reliability.fault-tolerance requires that background faults be detectable and recoverable. Payment notification jobs and benchmark snapshot jobs that fail silently result in real user impact — missed invoices, stale data — with no operational signal.
Severity rationale
Low for general background jobs, but elevated for cron jobs handling payments or notifications where silent failures cause direct user-visible impact with no retry path.
Remediation
Wrap every Vercel Cron route handler in try/catch with explicit logging — these routes have no automatic retry, so logging is the only failure signal.
// app/api/cron/digest/route.ts
export async function GET() {
try {
await sendWeeklyDigest()
return NextResponse.json({ success: true })
} catch (error) {
console.error('[Cron: digest] Failed:', error)
return NextResponse.json({ error: 'Digest failed' }, { status: 500 })
}
}
For jobs that require reliable retry (payment processing, email delivery), migrate from Vercel Cron to Inngest or Trigger.dev — both provide automatic retry with exponential backoff and a UI for monitoring failed jobs without manual log inspection.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Error Handling Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-391 — Unchecked Error Condition
- cwe · CWE-778 — Insufficient Logging
- iso-25010:2011 · reliability.fault-tolerance
Taxons
History
- 2026-04-18·v1.0.0·Initial import from saas-error-handling·automated