Skip to content

Releases: ueberBrot/monque

@monque/tsed@1.5.1

21 Mar 16:33
74a2398

Choose a tag to compare

Patch Changes

  • #290 cdfaa4b Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @tsed/core (^8.25.2 → ^8.25.4)
    • @monque/tsed: @tsed/di (^8.25.2 → ^8.25.4)
    • @monque/tsed: @tsed/mongoose (^8.25.2 → ^8.25.4)

@monque/tsed@1.5.0

19 Mar 20:10
ee59f2d

Choose a tag to compare

Minor Changes

  • #246 3f1459d Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @monque/core (^1.5.2 → ^1.6.0)

@monque/core@1.7.0

19 Mar 20:10
ee59f2d

Choose a tag to compare

Minor Changes

  • #249 2c7c079 Thanks @ueberBrot! - Add deprecation console warning for defaultConcurrency and maxConcurrency options.

  • #260 c11798b Thanks @ueberBrot! - Parallelized job acquisition in the poll loop using Promise.allSettled to lower wall-clock acquisition latency / reduce serialized DB waits (fans out one findOneAndUpdate per free slot).

Patch Changes

  • #269 cb707b9 Thanks @ueberBrot! - Validate job names and unique keys at the public API boundary so invalid identifiers fail fast before reaching MongoDB operations.

  • #266 9c75d1c Thanks @ueberBrot! - Fix .then() to .finally() in executePollAndScheduleNext to ensure the next poll is always scheduled, even if scheduleNextPoll throws. This prevents silently swallowed rejections when the callback in .then() throws.

  • #258 218d398 Thanks @ueberBrot! - Replace getActiveJobs() array allocation with getActiveJobCount() in shutdown path. The previous implementation created a throw-away string[] on every call just to check .length. The new method returns a count directly using Map.size, avoiding unnecessary array allocations during shutdown polling.

  • #259 b0babc4 Thanks @ueberBrot! - Replace the O(workers) iteration in getTotalActiveJobs() with an O(1) counter that updates on job acquisition and completion.

  • #263 a30186f Thanks @ueberBrot! - Add compound index for job retention to avoid collection scan during cleanup

  • #264 c2b046e Thanks @ueberBrot! - Deduplicate new Date() calls in update operations. Instead of creating multiple new Date() instances milliseconds apart within the same logical operation, methods like cancelJob, retryJob, and completeJob now capture a single const now = new Date() and reuse it for all timestamp fields, ensuring consistent timestamps.

  • #265 79300c0 Thanks @ueberBrot! - Optimize cancelJob, retryJob, and rescheduleJob by removing redundant findOne pre-checks. These operations now use an optimistic findOneAndUpdate first, reducing database round-trips for the common happy paths.

  • #262 1b6e29f Thanks @ueberBrot! - Removed redundant $unset operations for heartbeatInterval on job completion/failure to improve performance and retain observability metadata.

  • #257 d71049d Thanks @ueberBrot! - Replace the setInterval(100) busy-loop in stop() with a reactive drain promise that resolves instantly when all active jobs finish.

  • #267 965f8aa Thanks @ueberBrot! - Set maxListeners to 20 on Monque EventEmitter to prevent memory leaks in long-running processes.

@monque/tsed@1.4.3

13 Mar 15:31
cb4a3f5

Choose a tag to compare

Patch Changes

  • #238 75e781a Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @tsed/core (^8.25.1 → ^8.25.2)
    • @monque/tsed: @tsed/di (^8.25.1 → ^8.25.2)
    • @monque/tsed: @tsed/mongoose (^8.25.1 → ^8.25.2)

@monque/core@1.6.0

13 Mar 15:31
cb4a3f5

Choose a tag to compare

Minor Changes

  • #232 c3d2c83 Thanks @ueberBrot! - Add adaptive poll scheduling and targeted change stream processing

    • Adaptive polling: When change streams are active, safety polling runs at safetyPollInterval (default 30s) instead of the fast pollInterval. Falls back to pollInterval when change streams are unavailable.
    • Targeted polling: Change stream events now leverage the full document to poll only the specific worker(s) for the affected job type, skipping unrelated workers.
    • Wakeup timers: Future-dated jobs (nextRunAt > now) get a precise wakeup timer instead of waiting for the next poll cycle.
    • Local pending-job notifications: Jobs created or moved back to pending by the local scheduler now trigger the same targeted polling and wakeup-timer path immediately, avoiding startup races before the change stream cursor is fully ready.
    • Slot-freed re-polling: When a job completes or permanently fails, a targeted re-poll immediately picks up the next waiting job for that worker.
    • Re-poll queuing: Poll requests arriving while a poll is running are queued and executed after, preventing silently dropped change-stream-triggered polls.
    • New configuration option: safetyPollInterval (default: 30000ms).

@monque/tsed@1.4.2

09 Mar 20:01
7e7aad8

Choose a tag to compare

Patch Changes

  • #229 623f622 Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @monque/core (^1.5.1 → ^1.5.2)

@monque/core@1.5.2

09 Mar 14:24
4bde023

Choose a tag to compare

Patch Changes

  • #227 e9208ca Thanks @ueberBrot! - Prevent change stream reconnection attempts from running after the scheduler stops. This clears pending reconnect timers during shutdown and adds coverage for the stop-during-backoff scenario.

@monque/tsed@1.4.1

08 Mar 20:08
116d5ad

Choose a tag to compare

Patch Changes

  • #222 2c86bc6 Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @monque/core (^1.5.0 → ^1.5.1)

@monque/core@1.5.1

08 Mar 17:44
14c7a40

Choose a tag to compare

Patch Changes

  • #211 7181215 Thanks @ueberBrot! - Close shutdown race condition window by stopping timers before setting isRunning flag

@monque/tsed@1.4.0

02 Mar 11:12
c2a1fe7

Choose a tag to compare

Minor Changes

  • #198 47b6126 Thanks @renovate! - chore(deps): update dependencies

    • @monque/tsed: @monque/core (^1.4.0 → ^1.5.0)