Skip to content

Changelogs

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

  • worker: add cancelation support to sandboxed processors (#3806) (0d3879b)
  • queue: forward error from repeat or job-scheduler instances (#3775) fixes #3774 (a62241f)
  • connection: add datatype for version differentiation (#3746) (af9197d)
  • connection: merge redisOptions when duplicating cluster (#3759) (afb878f)
  • job: add job name and id as telemetry attributes in complete, retry, delay and failed spans (#3707) ref #3692 (6294b36)
  • deps: update dependency ioredis to v5.9.2 (#3713) (87e74b5)
  • job: apply limit when removing jobs by max age (python) (elixir) (#3694) fixes #3672 (a8fc316)
  • flow: remove debounce option from flow producer (#3646) (cc74805)
  • flow: remove deduplication option from flow producer (#3637) (f60c172)
  • telemetry: send most updated attemptsMade value when finishing (#3623) (1380a16)
  • job: allow resetting attemptsMade and attemptsStarted attributes on retry (#3596) ref #2152 (241d847)
  • stalled: prevent lock errors while job is not longer in active state (#3579) (a8b9d76)
  • job: support removeDeduplicationKey method (#3575) (b059cfc)
  • worker: promote delayed jobs while queue is rate limited (#3561) (a474801)
  • connection: consider error code when checking connection error (#3537) (045f3e7)
  • 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: call moveToActive after special errors (#3497) (37e9db5)
  • queue: support getGlobalRateLimit method (#3511) (6a31e0a)
  • 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)
  • worker: only consider infinity retry on connection errors (#3473) (9d5a678)
  • metrics: use lua script when calling getMetrics (#3459) (61987c6)
  • job: add custom jobId validation to prevent : inclusion (#3384) fixes #3382 (845a6f5)
  • queue: preserve Job type inference when no explicit type for JobBase (#3423) fixes #3421 (f642818)
  • job-scheduler: consider undefined type in getJobScheduler return type (#3412) (ffc6e26)
  • 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)
  • 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)
  • connection: ignore info command when skipVersionCheck is provided as true (#3342) fixes #3341 (b94d7ed)
  • scheduler: take offset into the startMillis calculation (#2944) fixes #247 (1e3f3c5)
  • woker: keep lower blockTimeout when consuming delayed markers (#3333) (e687d7c)
  • worker: do not wait rate limit when fetching jobs (#3322) (c32e6a0)
  • worker: allow calling moveToWait when job is processing (#3302) ref #3296 (e742511)
  • scheduler: fix slot calculation when using every (#3307) (588719e)
  • avoid circular reference between scripts and queue (#3301) (fb65677)
  • scheduler: save offset value when every is provided (#3142) (98f35bc)
  • worker: avoid dangling jobs to hang the queue with rate limit (#3297) fixes #3289 (263d33d)
  • stalled: fail stalled jobs in a lazy way (#3266) (5cbf064)
  • sandbox: add getIgnoredChildrenFailures method in job’s wrapper (#3263) (5d2723d)
  • flow: add new error code when parent has failed children (#3268) (b8fba5e)
  • job: add moveToCompleted method [python] (#3251) (6a8e3e2)
  • remove: pass correct children meta references (#3245) (01c62ad)
  • connection: add str type in connection option [python] (#3212) (72fac42)
  • flow: support failed children in getFlow and getDependencies methods (#3243) (d3b1cff)
  • job-scheduler: remove next delayed job if present even if scheduler does not exist (#3203) ref #3197 (61395bf)
  • flow: support ignored children in getFlow and getDependencies methods (#3238) ref #3213 (2927803)
  • deduplication: remove deduplication key only when jobId matches with the last one being saved (#3236) (192e82c)
  • queue: add getIgnoredChildrenFailures method (#3194) (4affb11)
  • flow: change parent failure in a lazy way (#3228) (6b37a37)
  • flow-producer: use FlowProducer prefix by default when calling getFlow (#3224) (bd17aad)
  • job-scheduler: fix endDate presence validation (#3195) (339f13e)
  • flow: remove job from dependencies when failParentOnFailure or continueParentOnFailure (#3201) (1fbcbec)
  • flow-producer: fix queueName otel attribute when passing it to addNode (#3198) (758ea26)
  • flows: add continueParentOnFailure option (#3181) (738d375)
  • updateProgress: allow more types to be used as progress (#3187) (f16b748)
  • flow: validate pending dependencies before removing lock (#3182) (8d59e3b)
  • job-scheduler: emit duplicated event when next delayed job exists (#3172) (d57698f)
  • add deduplicated job id to the deduplicated event (0f21c10)
  • scheduler: remove next delayed job when possible (#3153) (219c0db)
  • flow: only validate pending dependencies when moving to completed (#3164) (d3c397f)
  • flow: validate parentKey existence before trying to move it to failed (#3163) (5a88e47)
  • flow: consider prioritized state when moving a parent to failed (#3160) (d91d9f4)
  • prometheus export: expose global variables (0325a39)
  • job-scheduler: add marker when upserting job scheduler if needed (#3145) (0e137b2)
  • job: support ignored and failed counts in getDependenciesCount (#3137) ref #3136 (83953db)
  • flow: consider to fail a parent not in waiting-children when failParentOnFailure is provided (#3098) (589adb4)
  • job-scheduler: restore iterationCount attribute (#3134) (eec7114)
  • job: add complete span in moveToCompleted method (#3132) (c37123c)
  • worker: optimize job retrieval for failed jobs in chunks (#3127) (e0f02ce)
  • scheduler: remove multi when updating a job scheduler (#3108) (4b619ca)
  • job: deserialize priority in fromJSON (#3126) (c3269b1)
  • worker: cast delay_until to integer [python] (#3116) (db617e4)
  • 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)
  • job-scheduler: consider removing current job from wait, paused or prioritized (#3066) (97cd2b1)
  • delayed: add marker once when promoting delayed jobs (#3096) (python) (38912fb)
  • worker: do not execute run method when no processor is defined when resuming (#3089) (4a66933)
  • job: set processedBy when moving job to active in moveToFinished (#3077) fixes #3073 (1aa970c)
  • 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)
  • 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)
  • worker: wait fetched jobs to be processed when closing (#3059) (d4de2f5)
  • 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)
  • queue: add option to skip wait until connection ready (e728299)
  • queue-getters: add prometheus exporter (078ae9d)
  • worker: avoid possible hazard in closing worker (0f07467)
  • sandbox: add support for getChildrenValues (dcc3b06)
  • 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: add delayed job and update scheduler in same script (#2997) (9be28a0)
  • job-scheduler: add delayed job and scheduler in same script (#2993) (95718e8)
  • job-scheduler: avoid duplicates when upserting in a quick sequence (#2991) (e8cdb99)
  • dynamic-rate-limit: validate job lock cases (#2975) (8bb27ea)
  • 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)
  • telemetry: add option to omit context propagation on jobs (#2946) (6514c33)
  • job-scheduler: omit deduplication and debounce options from template options (#2960) (b5fa6a3)
  • 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)
  • queue: enhance getJobScheduler method to include template information (#2929) ref #2875 (cb99080)
  • 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)
  • scheduler: remove deprecation warning on immediately option (#2923) (14ca7f4)
  • 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)
  • job-scheduler: add telemetry support to the job scheduler (72ea950)
  • marker: add base markers while consuming jobs to get workers busy (#2904) fixes #2842 (1759c8b)
  • telemetry: do not set span on parent context if undefined (c417a23)
  • queue: fix generics to be able to properly be extended (f2495e5)
  • 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)
  • connection: set packageVersion as protected attribute for extension (#2884) (411ccae)
  • queue-events: add QueueEventsProducer for publishing custom events (#2844) (5eb03cd)
  • 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)
  • queue: add option to skip metas update (b7dd925)
  • redis: use version for naming loaded lua scripts (fe73f6d)
  • sandbox: fix serialization of error with circular references are present (#2815) fix #2813 (a384d92)
  • repeat: deprecate immediately on job scheduler (ed047f7)
  • repeat: also consider startDate when using “every” (25bbaa8)
  • queue: add new upsertJobScheduler, getJobSchedulers and removeJobSchedulers methods (dd6b6b2)
  • 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)
  • 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)
  • fifo-queue: use linked list structure for queue (#2629) (df74578)
  • 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)
  • connection: remove unnecessary process.env.CI reference (#2705) (53de304)
  • worker: fix close sequence to reduce risk for open handlers (#2656) (8468e44)
  • flow: validate parentData before ignoreDependencyOnFailure when stalled check happens (#2702) (python) (9416501)
  • worker: promote delayed jobs while queue is rate limited (#2697) ref #2582 (f3290ac)
  • queue-events: pass debounceId as a param of debounced event (#2678) (97fb97a)
  • 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)
  • delayed: keep moving delayed jobs to waiting when queue is paused (#2640) (python) (b89e2e0)
  • delayed: avoid using jobId in order to schedule delayed jobs (#2587) (python) (228db2c)
  • parent: consider re-adding child that is in completed state using same jobIds (#2627) (python) fixes #2554 (00cd017)
  • queue-getters: consider passing maxJobs when calling getRateLimitTtl (#2631) fixes #2628 (9f6609a)
  • 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)
  • worker: properly cancel blocking command during disconnections (2cf12b3)
  • extendlock, createbulk use pipeline no multi command (#2584) (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)
  • 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)
  • stalled: consider ignoreDependencyOnFailure option (python) (#2540) fixes #2531 (0140959)
  • worker: reset delays after generating blockTimeout value (#2529) (e92cea4)
  • worker: return minimumBlockTimeout depending on redis version (python) (#2532) (83dfb63)
  • stalled: consider failParentOnFailure when moving child into failed (#2526) fixes #2464 (python) (5e31eb0)
  • worker: use 0.002 as minimum timeout for redis version lower than 7.0.8 (#2515) fixes #2466 (44f7d21)
  • allow arbitrary large drainDelay (9693321)
  • Nothing changed, triggered by a python version release
  • stalled: remove jobId from stalled after removing lock when moved from active (#2512) (python) (64feec9)
  • deps: remove script loader from dist as it is used only when building package (#2503) (6f9ca23)
  • client: try catch list command as it’s not supported in GCP (#2506) (ca68a9e)
  • connection: ignore error when setting custom end status (#2473) (3e17e45)
  • getters: add getWorkersCount (743c7aa)
  • 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)
  • 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)
  • 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)
  • flow: add ignoreDependencyOnFailure option (#2426) (c7559f4)
  • redis-connection: close redis connection even when initializing (#2425) fixes #2385 (1bc26a6)
  • flow: parent job cannot be replaced (python) (#2417) (2696ef8)
  • 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)
  • rate-limit: move job to wait even if ttl is 0 (#2403) (c1c2ccc)
  • stalled: consider adding marker when moving job back to wait (#2384) (4914df8)
  • worker: worker can be closed if Redis is down (#2350) (888dcc2)
  • worker: throw error if connection is missing (6491a18)
  • job: provide skipAttempt option when manually moving a job (#2203) (0e88e4f)
  • worker: improved markers handling (73cf5fc) (0bac0fb)