Migrate task queue from in-memory to BullMQ + Redis
Publish Image / publish (push) Successful in 36s

Replace the volatile in-memory Map/Set queue with BullMQ backed by Redis
for persistence across restarts, automatic retry with exponential backoff,
and non-blocking workspace cleanup.

- Two queues: workspace-create (concurrency-limited) and workspace-cleanup
  (with polling instead of sleep-based stop→delete)
- Active workspaces tracked in Redis hash for dedup across restarts
- Stale sweep every 10 minutes catches orphaned workspaces
- Graceful shutdown on SIGTERM/SIGINT
- Replace node-cron with BullMQ repeatable jobs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Daniel Samson
2026-04-12 15:40:12 +01:00
co-authored by Claude Opus 4.6
parent a6ff7b7fb5
commit 13e96e9356
16 changed files with 710 additions and 180 deletions
+1 -1
View File
@@ -43,7 +43,7 @@ export function issueComment(config: Config, queue: TaskQueue) {
giteaToken: config.giteaDevToken,
};
const queued = queue.enqueue(task);
const queued = await queue.enqueue(task);
return c.json({ ok: true, queued });
};