Engineering Gap
app/backend/src/main.ts line 49 calls app.enableShutdownHooks() which enables NestJS lifecycle hooks, but no explicit handling for draining in-flight BullMQ jobs before shutdown. Jobs may be lost during deployments.
Codebase Evidence
app/backend/src/main.ts line 49: app.enableShutdownHooks() — minimal shutdown handling
app/backend/src/app.module.ts lines 62-80: BullMQ configured with job removal settings but no shutdown drain
Risk Profile
In-flight onchain transactions or verification jobs lost during deployment.
Remediation Strategy
Add OnApplicationShutdown handler to BullMQ module. Pause queues, wait for active jobs to complete (with timeout), then close connections.
Success Conditions
Change Surface
Files: main.ts, app.module.ts, BullMQ processors
Security Review
No security impact.
Completion Checklist
Engineering Gap
app/backend/src/main.tsline 49 callsapp.enableShutdownHooks()which enables NestJS lifecycle hooks, but no explicit handling for draining in-flight BullMQ jobs before shutdown. Jobs may be lost during deployments.Codebase Evidence
app/backend/src/main.tsline 49:app.enableShutdownHooks()— minimal shutdown handlingapp/backend/src/app.module.tslines 62-80: BullMQ configured with job removal settings but no shutdown drainRisk Profile
In-flight onchain transactions or verification jobs lost during deployment.
Remediation Strategy
Add
OnApplicationShutdownhandler to BullMQ module. Pause queues, wait for active jobs to complete (with timeout), then close connections.Success Conditions
Change Surface
Files:
main.ts,app.module.ts, BullMQ processorsSecurity Review
No security impact.
Completion Checklist