bunqueue v2.6.0
blog · release
bunqueue v2.6.0
Fixes 5 bugs. 8 new TCP command handlers, updateJobData / updateJobChildrenIds.
To install bunqueue v2.6.0
Section titled “To install bunqueue v2.6.0”bun add bunqueue@2.6.0npm install bunqueue@2.6.0To upgrade bunqueue
Section titled “To upgrade bunqueue”bun add bunqueue@latest8 new TCP command handlers
Section titled “8 new TCP command handlers”ClearLogs, ExtendLock, ExtendLocks, ChangeDelay, SetWebhookEnabled, CompactMemory, MoveToWait, PromoteJobs. These commands were already sent by the client SDK and MCP adapter but had no server-side handler, causing silent Unknown command errors in TCP mode. All 8 are now fully functional.
updateJobData / updateJobChildrenIds
Section titled “updateJobData / updateJobChildrenIds”Persistence methods added to SqliteStorage for parent-child relationship durability.
More additions
Section titled “More additions”- 20 new regression tests covering all fixes in this release.
Bugfixes
Section titled “Bugfixes”- Expired lock requeue not updating stats: When a job’s lock expired and was requeued for retry,
requeueExpiredJobinlockManager.tsdid not callshard.incrementQueued()orshard.notify(). This causedgetStats()to report 0 waiting jobs and workers in long-poll mode to not wake up for the requeued job. updateJobParentnot persisting to SQLite:childrenIdsand__parentIdmutations were only applied in memory. After a server restart, all parent-child flow relationships were lost. Now properly persisted via dedicated SQLite update methods.getJobreturning null for completed jobs without storage: In no-SQLite mode (embedded without persistence),getJob()returnednullfor completed/DLQ jobs because it only checkedctx.storage?.getJob(). Now falls back toctx.completedJobsDatain-memory map.- MCP
UnregisterWorkerfield mismatch: MCP adapter sent{ cmd: 'UnregisterWorker', id }but the server expected{ workerId }. Worker unregistration via MCP in TCP mode always failed silently. Fixed to send the correct field name. JobHeartbeatignoringdurationfield: When the MCP adapter sent aJobHeartbeatwith a customduration, the handler ignored it and renewed the lock with the default TTL. Now properly extends the lock with the requested duration viarenewJobLock().
Thanks to 1 contributor!
Section titled “Thanks to 1 contributor!”← bunqueue v2.5.8 · Release on GitHub · Commits since v2.5.8 · Full changelog · All posts