Skip to content

Changelogs

Source URL: https://docs.bullmq.io/bullmq-pro/changelog

  • job-scheduler-pro: consider group option in template option (#405) (4c936ca)
  • flow: remove deduplication option from flow producer (#3637) (f60c172)
  • telemetry: send most updated attemptsMade value when finishing (#3623) (1380a16)
  • deps: pin dependencies (#3609) (5fbf778)
  • job: allow resetting attemptsMade and attemptsStarted attributes on retry (#3596) ref #2152 (241d847)
  • job: remove deferredFailure when moving job to failed
  • stalled: prevent lock errors while job is not longer in active state (#3579) (a8b9d76)
  • connection: consider error code when checking connection error (#3537) (045f3e7)
  • worker: promote delayed jobs while queue is rate limited (#3561) (a474801)
  • job-scheduler: changing every in upsert resets the iterations (#3551) (b4c7c65)
  • queue: emit progress event when calling updateJobProgress (#3528) (c82df83)
  • upsertJobScheduler does not apply change on existing scheduled job (#3524) (98f73b3), closes #3500
  • worker: only emit error when moveToActive failed (0aa7cc5)
  • queue: emit removed event when calling remove method (#3492) fixes #2668 (7a3f2fa1)
  • worker: emit error once when failure happens in moveToFinished (#3498) (4b4bd97e)
  • worker: do not retry processor when connection errors happen (#3482) (f1573b3)
  • job-scheduler: fix unstable upsert (#3446) (2241101)
  • worker: call moveToActive after special errors (#3497) (37e9db5)
  • worker: only consider infinity retry on connection errors (#3473) (9d5a678)
  • metrics: use lua script when calling getMetrics (#3459) (61987c6)
  • scripts: detect missing transformed scripts (#371) (006b394)
  • queue: preserve Job type inference when no explicit type for JobBase (#3423) fixes #3421 (f642818)
  • types: export Processor type (#3418) (70e8a3f)
  • job-scheduler: consider undefined type in getJobScheduler return type (#3412) (ffc6e26)
  • job: consider parent update when retrying (#3402) (python) fixes #3320 (316d1ed)
  • job: prevent unnecessary tryCatch calls in getTraces (#3400) (d71b872)
  • worker: adds jobName and attemptsMade span attributes when processJob is called (#3199) (db0a922)
  • sandbox: support moveToWaitingChildren method (#3389) (0fecc6c)
  • includes: replace missing base includes with pro (#368) (e51bb10)
  • scheduler: consider startDate to generate nextMillis when using pattern (#3385) fixes #3378 (53754fb)
  • worker: emit failed event when children are failed in moveToWaitingChildren (#3346) (93df852)
  • queue: add support for ‘waiting’ parameter in clean method (#3338) fixes #3125 (edb7147)
  • flow: remove parent from active when there are unsuccessful children (#3348) (34ee339)
  • worker: do not keep active jobs when pausing or closing (#3350) fixes #3349 (424d155)
  • repeat: use legacy updateRepeatableJob script when old format is present (#3364) fixes #3275 (1e221d5)
  • rate-limit: throw right error message if job does not exist (#3354) (83d9695)
  • scheduler: take offset into the startMillis calculation (#2944) fixes #247 (1e3f3c5)
  • connection: ignore info command when skipVersionCheck is provided as true (#3342) fixes #3341 (b94d7ed)
  • groups: use rate limit delay as blockTimeout when is lower than delayed marker (#353) (9936325)
  • worker: do not wait rate limit when fetching jobs (#3322) (c32e6a0)
  • woker: keep lower blockTimeout when consuming delayed markers (#3333) (e687d7c)
  • avoid circular reference between scripts and queue (#3301) (fb65677)
  • scheduler: fix slot calculation when using every (#3307) (588719e)
  • worker: allow calling moveToWait when job is processing (#3302) ref #3296 (e742511)
  • scheduler: save offset value when every is provided (#3142) (98f35bc)
  • deps: address brace-expansion vulnerability with v1.1.12 (240b0b5)
  • job-scheduler: support for groups (#345) (467544e)
  • flow: add new error code when parent has failed children (#3268) (b8fba5e)
  • job: do not parse ignored failures in getDependencies (#3284) fixes #3283 (04ca6b5)
  • scheduler: remove current job when it is in delayed state (#3269) fixes #3262 #3272 (1ca4cbd)
  • worker: avoid dangling jobs to hang the queue with rate limit (#3297) fixes #3289 (263d33d)
  • sandbox: add getIgnoredChildrenFailures method in job’s wrapper (#3263) (5d2723d)
  • backoff: add jitter option (#3291) (86c4c6d)
  • stalled: fail stalled jobs in a lazy way (#3266) (5cbf064)
  • groups: use correct local concurrency attribute name (#343) (712d263)
  • deduplication: remove deduplication key only when jobId matches with the last one being saved (#3236) (192e82c)
  • job-scheduler: remove next delayed job if present even if scheduler does not exist (#3203) ref #3197 (61395bf)
  • queue-events: omit telemetry options (#3239) (e4dac2c)
  • queue: add getIgnoredChildrenFailures method (#3194) (4affb11)
  • flow: support ignored children in getFlow and getDependencies methods (#3238) ref #3213 (2927803)
  • flow: support failed children in getFlow and getDependencies methods (#3243) (d3b1cff)
  • flow-producer: fix queueName otel attribute when passing it to addNode (#3198) (758ea26)
  • flow: remove job from dependencies when failParentOnFailure or continueParentOnFailure (#3201) (1fbcbec)
  • job-scheduler: fix endDate presence validation (#3195) (339f13e)
  • made line split more compatible (#3208) (3c2349a), closes #3204
  • flow-producer: use FlowProducer prefix by defualt when calling getFlow (#3224) (bd17aad)
  • flow: change parent failure in a lazy way (#3228) (6b37a37)
  • job: deserialize priority in fromJSON (#3126) (c3269b1)
  • scheduler: remove multi when updating a job scheduler (#3108) (4b619ca)
  • flow: consider to fail a parent not in waiting-children when failParentOnFailure is provided (#3098) (589adb4)
  • job-scheduler: restore iterationCount attribute (#3134) (eec7114)
  • job-scheduler: add marker when upserting job scheduler if needed (#3145) (0e137b2)
  • flow: consider prioritized state when moving a parent to failed (#3160) (d91d9f4)
  • flow: only validate pending dependencies when moving to completed (#3164) (d3c397f)
  • scheduler: remove next delayed job when possible (#3153) (219c0db)
  • job-scheduler: emit duplicated event when next delayed job exists (#3172) (d57698f)
  • flow: validate pending dependencies before removing lock (#3182) (8d59e3b)
  • queue-events: pass right path for JobProgress type (#3192) fixes #3191 (33c62e6)
  • fix manual retries so that they honor groups max concurrency (#332) (5fffdc6)
  • job: add complete span in moveToCompleted method (#3132) (c37123c)
  • job: support ignored and failed counts in getDependenciesCount (#3137) ref #3136 (83953db)
  • prometheus export: expose global variables (0325a39)
  • add deduplicated job id to the deduplicated event (0f21c10)
  • updateProgress: allow more types to be used as progress (#3187) (f16b748)
  • worker: optimize job retrieval for failed jobs in chunks (#3127) (e0f02ce)
  • flow: validate parentKey existence before trying to move it to failed (#3163) (5a88e47)
  • worker-pro: fix return typing in getNextJob method (#305) (ee43930)
  • group: support removing custom group rate limit (#299) (685eec1)
  • scheduler: validate repeatKey if present when cleaning failed jobs (#3115) fixes #3114 (d4cad84)
  • flow: consider delayed state when moving a parent to failed (#3112) (6a28b86)
  • telemetry: fix span name for moveToFailed logic (#3113) (7a4b500)
  • batch: remove debug statement (6620f82)
  • batches: add initial support for minSize (48d1e01)
  • batches: add timeout option for minSize (2c40aff)
  • job-scheduler: consider removing current job from wait, paused or prioritized (#3066) (97cd2b1)
  • delayed: add marker once when promoting delayed jobs (#3096) (python) (38912fb)
  • repeat: use JobPro class when creating delayed job (#292) (ce9eff8)
  • worker: do not execute run method when no processor is defined when resuming (#3089) (4a66933)
  • worker: do not resume when closing (#3080) (024ee0f)
  • job: set processedBy when moving job to active in moveToFinished (#3077) fixes #3073 (1aa970c)
  • drain: pass delayed key for redis cluster (#3074) (05ea32b)
  • job-scheduler: restore limit option to be saved (#3071) (3e649f7)
  • job-scheduler: return undefined in getJobScheduler when it does not exist (#3065) fixes #3062 (548cc1c)
  • fix return type of getNextJob (b970281)
  • job: add moveToWait method for manual processing (#2978) (5a97491)
  • queue: support removeGlobalConcurrency method (#3076) (ece8532)
  • add-job: add job into wait or prioritized state when delay is provided as 0 (#3052) (3e990eb)
  • worker: wait fetched jobs to be processed when closing (#3059) (d4de2f5)
  • job: save processedBy attribute when preparing for processing (#300) (c947f6e)
  • groups: support local limiter options (#262) (fed293c)
  • job-scheduler: revert add delayed job and update in the same script (9f0f1ba)
  • worker: evaluate if a job needs to be fetched when moving to failed (#3043) (406e21c)
  • retry-job: consider updating failures in job (#3036) (21e8495)
  • flow-producer: add support for skipWaitingForReady (6d829fc)
  • job-scheduler: save limit option (#3033) (a1571ea)
  • queue: add option to skip wait until connection ready (e728299)
  • worker: avoid possible hazard in closing worker (0f07467)
  • queue-getters: add prometheus exporter (078ae9d)
  • job-scheduler: save iteration count (#3018) (ad5c07c)
  • sandbox: add support for getChildrenValues (dcc3b06)
  • worker: add missing otel trace when extending locks (#290) (efbf948)
  • worker: remove the use of multi in extend locks (3862075)
  • retry-job: pass stalled key instead of limiter (#291) (e981c69)
  • queue: use same telemetry logic in add method as BullMQ (#287) (214c0d9)
  • job-scheduler: use delayed job data when template data is not present (#3010) fixes #3009 (95edb40)
  • job-scheduler: add next delayed job only when prevMillis matches with producerId (#3001) (4ea35dd)
  • job-scheduler: avoid duplicates when upserting in a quick sequence (#2991) (e8cdb99)
  • dynamic-rate-limit: validate job lock cases (#2975) (8bb27ea)
  • job-scheduler: add delayed job and update scheduler in same script (#2997) (9be28a0)
  • job-scheduler: add delayed job and scheduler in same script (#2993) (95718e8)
  • sandbox: fix issue where job could stay in active forever (#2979) (c0a6bcd)
  • sandboxed: fix detecting special errors by sending default messages (#2967) fixes #2962 (52b0e34)
  • scripts: make sure jobs fields are not empty before unpack (4360572)
  • guarantee every repeatable jobs are slotted (9917df1)
  • job-scheduler: avoid duplicated delayed jobs when repeatable jobs are retried (af75315)
  • job-scheduler: omit deduplication and debounce options from template options (#2960) (b5fa6a3)
  • telemetry: add option to omit context propagation on jobs (#2946) (6514c33)
  • replace multi by lua scripts in moveToFailed (#2958) (c19c914)
  • queue: enhance getJobSchedulers method to include template information (#2956) ref #2875 (5b005cd)
  • worker: catch connection error when moveToActive is called (#2952) (544fc7c)
  • scheduler-template: remove console.log when getting template information (#2950) (3402bfe)
  • flow: allow using removeOnFail and failParentOnFailure in parents (#2947) fixes #2229 (85f6f6f)
  • job-scheduler: upsert template when same pattern options are provided (#2943) ref #2940 (b56c3b4)
  • queue: enhance getJobScheduler method to include template information (#2929) ref #2875 (cb99080)
  • queue: add getJobSchedulersCount method (#2945) (38820dc)
  • stalled: move parent to group when needed (#276) (8449a41)
  • scheduler: remove deprecation warning on immediately option (#2923) (14ca7f4)
  • telemetry: add telemetry support (#273) (e5cc134)
  • queue: refactor a protected addJob method allowing telemetry extensions (09f2571)
  • queue: change _jobScheduler from private to protected for extension (#2920) (34c2348)
  • scheduler: use Job class from getter for extension (#2917) (5fbb075)
  • telemetry: do not set span on parent context if undefined (c417a23)
  • job-scheduler: add telemetry support to the job scheduler (72ea950)
  • queue: add rateLimit method (#2896) (db84ad5)
  • queue: add removeRateLimitKey method (#2806) (ff70613)
  • marker: add base markers while consuming jobs to get workers busy (#2904) fixes #2842 (1759c8b)
  • deps: use fixed version of bullmq v5.26.1 (#269) (33e73e4)
  • queue: fix generics to be able to properly be extended (f2495e5)
  • queue-pro: expose jobs pro in getters (e1da097)
  • improve queue getters to use generic job type (#2905) (c9531ec)
  • job-scheculer: avoid hazards when upserting job schedulers concurrently (022f7b7)
  • connection: do not allow to set blockingConnection option (#2851) (9391cc2)
  • repeatable: only apply immediately in the first iteration (f69cfbc)
  • scripts: set package version by default for extension (#2887) (b955340)
  • worker: allow retrieving concurrency value (#2883) fixes #2880 (52f6317)
  • connection: set packageVersion as protected attribute for extension (#2884) (411ccae)
  • queue-events: add QueueEventsProducer for publishing custom events (#2844) (5eb03cd)
  • flows: add telemetry support (#2879) (5ed154b)
  • deps: bump msgpackr to 1.1.2 to resolve ERR_BUFFER_OUT_OF_BOUNDS error (#2882) ref #2747 (4d2136c)
  • proper way to get version (b4e25c1)
  • scripts: add missing wait in isJobInList (9ef865c)
  • redis: use version for naming loaded lua scripts (fe73f6d)
  • queue: add option to skip metas update (b7dd925)
  • queue: add queue version support (#2822) (3a4781b)
  • sandbox: fix serialization of error with circular references are present (#2815) fix #2813 (a384d92)
  • worker-pro: use JobPro as part of WorkerProListener events (#260) (966ac9c)
  • repeat: also consider startDate when using “every” (25bbaa8)
  • sandbox: catch exit errors (#2800) (6babb9e)
  • repeat: deprecate immediately on job scheduler (ed047f7)
  • job: expose priority value (#2804) (9abec3d)
  • job: add deduplication logic (#2796) (0a4982d)
  • queue: add new upsertJobScheduler, getJobSchedulers and removeJobSchedulers methods (dd6b6b2)
  • worker-fork: allow passing fork options (#2795) (f7a4292)
  • worker-thread: allow passing Worker options (#2791) ref #1555 (6a1f7a9)
  • repeatable: avoid delayed job deletion if next job already existed (#2778) (6a851c1)
  • connection: allow passing connection string into IORedis (#2746) (73005e8)
  • metrics: differentiate points in different minutes to be more accurate (#2766) (python) (7cb670e)
  • pattern: do not save offset when immediately is provided (#2756) (a8cb8a2)
  • groups: support changing priority intra groups (#255) (2b0bf7e)
  • queue: add getDebounceJobId method (#2717) (a68ead9)
  • metrics: save zeros as much as max data points (#2758) (3473054)
  • repeat: replace delayed job when updating repeat key (88029bb)
  • flow: remove debounce key when parent is moved to fail (#2720) (d51aabe)
  • flow: recursive ignoreDependencyOnFailure option (#2712) (53bc9eb)
  • job: throw error if removeDependencyOnFailure and ignoreDependencyOnFailure are used together (#2711) (967632c)
  • job: change moveToFinished return type to reflect jobData (#2706) ref #2342 (de094a3)
  • stalled: support removeDependencyOnFailure option when job is stalled (#2708) (e0d3790)
  • fifo-queue: use linked list structure for queue (#2629) (df74578)
  • worker: fix close sequence to reduce risk for open handlers (#2656) (8468e44)
  • flow: validate parentData before ignoreDependencyOnFailure when stalled check happens (#2702) (python) (9416501)
  • queue-pro: add getGroupRateLimitTtl method (#250) (5a907d9)
  • worker: promote delayed jobs while queue is rate limited (#2697) ref #2582 (f3290ac)
  • flow: get groupId from moveToWaitingChildren script (#247) (1bee26e)
  • queue-events: pass debounceId as a param of debounced event (#2678) (97fb97a)
  • job: allow passing debounce as option (#2666) (163ccea)
  • repeatable: remove repeat hash when removing repeatable job (#2676) (97a297d)
  • repeatable: keep legacy repeatables if it exists instead of creating one with new structure (#2665) (93fad41)
  • repeatable: consider removing legacy repeatable job (#2658) fixes #2661 (a6764ae)
  • repeatable: pass custom key as an args in addRepeatableJob to prevent CROSSSLOT issue (#2662) fixes #2660 (9d8f874)
  • groups: add getCountsPerPriorityForGroup method (#241) ref #238 (2d3c81c)
  • get-groups-count: consider other group states apart of waiting (#240) (eccd4e6)
  • queue-getters: consider passing maxJobs when calling getRateLimitTtl (#2631) fixes #2628 (9f6609a)
  • job: consider changing priority to 0 (#2599) (4dba122)
  • priority: consider paused state when calling getCountsPerPriority (python) (#2609) (6e99250)
  • priority: use module instead of bit.band to keep order (python) (#2597) (9ece15b)
  • job: set processedBy using hmset (#2592) (python) (238680b)
  • groups: promote maxed groups after decreasing active count (#234) (545b6c2)
  • maxed: consider passing max concurrency into repairMaxedGroup (#232) (a3885a5)
  • groups: allow passing limit when calling getGroupsJobsCount (#230) (ac0469f)
  • groups: consider removing job from prioritized group when using remove method (#229) (b61b96f)
  • worker: properly cancel blocking command during disconnections (2cf12b3)
  • extendlock,createbulk use pipeline no multi command (a053d9b)
  • repeat: throw error when endDate is pointing to the past (#2574) (5bd7990)
  • retry-job: throw error when job is not in active state (#2576) (ca207f5)
  • sandboxed: ensure DelayedError is checked in Sandboxed processors (#2567) fixes #2566 (8158fa1)
  • job: validate job existence when adding a log (#2562) (f87e3fe)
  • groups: remove concurrency when removing group (#226) (332728e)
  • group: add getGroupConcurrency method (#224) (88e334e)
  • worker: make sure clearTimeout is always called after bzpopmin (782382e)
  • worker: force timeout on bzpopmin command (#2543) (ae7cb6c)
  • worker: do not call bzpopmin when blockDelay is lower or equal 0 (#2544) ref #2466 (9760b85)
  • worker-pro: correct typo in options argument for limiter (0e999dd)
  • groups: support for local group concurrency using setGroupConcurrency method (#220) (159a341)
  • stalled: consider ignoreDependencyOnFailure option (python) (#2540) fixes #2531 (0140959)
  • worker: return minimumBlockTimeout depending on redis version (python) (#2532) (83dfb63)
  • stalled: consider failParentOnFailure when moving child into failed (#2526) fixes #2464 (python) (5e31eb0)
  • worker: reset delays after generating blockTimeout value (#2529) (e92cea4)
  • queue: add getGroupActiveCount method (#217) (d59d2e5)
  • worker: use 0.002 as minimum timeout for redis version lower than 7.0.8 (#2515) fixes #2466 (44f7d21)
  • allow arbitrary large drainDelay (9693321)
  • stalled: remove jobId from stalled after removing lock when moved from active (#2512) (python) (64feec9)
  • add-to-group: skip reinsertion of group (#215) (6823251)
  • deps: remove script loader from dist (#213) (dd28ec8)
  • connection: ignore error when setting custom end status (#2473) (3e17e45)
  • job: stack trace limit (#2487) (cce3bc3)
  • scripts: use command name in error message when moving to finished (#2483) (3c335d4)
  • queue: use QueueOptions type in opts attribute (#2481) (51a589f)
  • worker: validate drainDelay must be greater than 0 (#2477) (ab43693)
  • getters: add getWorkersCount (743c7aa)
  • group-limit: set rate limiting even when group is empty (#212) (08824cf)
  • deps: move fast-glob and minimatch as dev-dependencies (#2452) (cf13b31)
  • worker: set blockTimeout as 0.001 when reach the time to get delayed jobs (#2455) fixes #2450 (2de15ca)
  • deps: replaced glob by fast-glob due to security advisory (91cf9a9)
  • sandbox: extend SandboxedJob from JobJsonSandbox (#2446) fixes #2439 (7606e36)
  • add-job: fix parent job cannot be replaced error message (#2441) (1e9a13f)
  • worker: add support for naming workers (7ba2729)
  • flow: remove failed children references on auto removal (#2432) (8a85207)
  • redis-connection: close redis connection even when initializing (#2425) fixes #2385 (1bc26a6)
  • flow: add ignoreDependencyOnFailure option (#2426) (c7559f4)
  • stalled: add command to repair stalled key (#193) (8ebb72e)
  • repeatable: allow saving custom key (#1824) (8ea0e1f)
  • job: provide skipAttempt option when manually moving a job (#2203) (0e88e4f)
  • worker: improved markers handling (73cf5fc) (0bac0fb)
  • marker: differentiate standard and delayed markers (python) (#2389) (18ebee8)
  • change-delay: add delay marker when needed (#2411) (8b62d28)
  • flow: add marker when moving parent to wait (python) (#2408) (6fb6896)
  • move-to-active: check rate limited once (#2391) (ca6c17a)