Skip to content

v1.5.0

Compare
Choose a tag to compare
@ehasrouni ehasrouni released this 29 May 20:15
2897431

Changes

  • 437 - Use minimum between per-class job_iteration_max_job_runtime and JobIteration.max_job_runtime, instead of enforcing only setting decreasing values.
    Because it is possible to change the global or parent values after setting the value on a class, it is not possible to truly enforce the decreasing value constraint. Instead, we now use the minimum between the global value and per-class value. This is considered a non-breaking change, as it should not break any existing code, it only removes the constraint on new classes.
  • 443 - Use Sidekiq :quit callback to detect graceful shutdown. This makes job-iteration compatible with Sidekiq run in embedded mode.
  • 445 - Add the around_iterate callback, which runs around each call of each_iteration. This adds extensibility to build some generic handlers, such as metrics collection and logging.
  • 450 - Infer which interruption adapter to use from the queue adapter of the job. This deprecates setting JobIteration.interruption_adapter = <callable>, in favor of JobIteration.register_interruption_adapter(<queue adapter name>, <callable>). JobIteration.interruption_adapter will be removed in a future release.

Bug fixes

  • 437 - Defer reading JobIteration.max_job_runtime until runtime, instead of closing around the value at the time of job definition.
  • 431 - Use #id_value instead of send(:id)
    when generating position for cursor based on :id column (Rails 7.1 and above, where composite
    primary models are now supported). This ensures we grab the value of the id column, rather than a
    potentially composite primary key value.
  • 456 - Use Arel to generate SQL that's type compatible for the
    cursor pagination conditionals in ActiveRecord cursor. Previously, the cursor would coerce numeric ids to a string value
    (e.g.: ... AND id > '1')

Full Diff: v1.4.1...v1.5.0