Skip to content

Releases: hummingbird-project/swift-jobs

v1.1.0

05 Feb 14:11

Choose a tag to compare

Breaking change

  • Breaking change for driver writers. JobOptions now requires init(delayUntil:). #114

Minor release changes

  • Add JobQueueDriver.context that holds contextual data about currently running instance of queue. #118
  • Cleanup jobs tagged processing whose worker has stopped responding. #118
  • Provide access to jobqueue when constructing middleware result builder. #123
  • Conform JobQueueProtocol to Sendable

Patch release changes

  • Pass job queue name to middleware initialisers via a Task local. #122
  • Fix issue where initialiser for JobProcessor ignores the middleware stack from the JobQueue. #125

v1.0.0

15 Sep 15:23
ea507ab

Choose a tag to compare

No major changes from the release candidate 1.0.0-rc.1

Job queuing system for offloading workloads (jobs) to other nodes.

  • Queue, pause, resume, cancel jobs
  • Queue delayed jobs
  • Job processor can be run on multiple nodes
  • Multiple drivers available (using Valkey/Redis, Postgres)
  • Graceful handling of SIGTERM, SIGINT
  • Job scheduler for crontab style triggering of jobs
  • Customizable retry support, with default implementation using exponential jitter
  • Middleware support to allow for additional customisation
  • Support for metrics and distributed tracing

v1.0.0 Release Candidate 1

01 Jul 12:49

Choose a tag to compare

Minor release changes

  • Add JobQueueOptions.gracefulShutdownTimeout. Graceful shutdown by default waits for the currently running jobs to finish. This adds a timeout before cancelling a job. #99
  • Don't require job parameters to conform to protocol JobParameters. And add additional API points that take a job name alongside the job parameters #101, #102
  • Add JobMetadataDriver protocol for a queue that supports setting/getting date and also acquiring and releasing locks. Both of these are needed by the schedular.
  • Separate job processing service from JobQueue. JobQueue.processor(options:) will create a Service to process the jobs on your job queue. #104
  • Added JobMiddleware.onCompletedJob() and provide separate context types for each event type. #107
  • Add option to run JobScheduler on multiple nodes but only have one of them schedule jobs. If one node goes down another node will pick up the task of scheduling jobs. #105
  • Swift 6 is the minimum required version.

Patch release changes

  • Shutdown job queue on task cancellation. #98
  • Make push, cancel, pause, resume @inlinable. #103

Other changes

  • Move to using Swift Testing

v1.0.0 Beta 8

01 Apr 16:09
1cc2292

Choose a tag to compare

Breaking changes

  • Add JobMiddleware. Move metrics and tracing to middleware. #54
  • Move Job serialization to drivers. #63
  • Require all job parameters to conform to JobParameters. #69
  • Move JobOptions to job queue driver. #78

Minor release changes

  • Add more information to JobQueueError. #55
  • Keep existing JobID when retrying jobs. #64
  • Add JobQueueProtocol. #71, #81
  • Add parsing of crontab format in scheduler. #74
  • Add JobRetryStrategy to allow flexibility in how failed jobs are retried. #75
  • Add queuedAt Date to JobExecutionContext. #73
  • Add current attempt number to JobExecutionContext. #94
  • Use FoundationEssentials when it is available. #76
  • Add JobName in metrics where it wasn't already available. #72
  • Add job queue name to metrics and trace spans. #82
  • Add timeout to JobDefinition for cancel jobs that are stuck. #89
  • Add protocol for queues that support Resumable and Cancellable jobs. #90

Patch release changes

  • Call self.queue.failed inside an unstructured task to avoid it being cancelled
  • Fix scheduling of jobs on restart of scheduler. #68
  • Replace single lastScheduledDate metadata with multiple (one for each schedule). #92

v1.0.0 Beta 7

14 Jan 08:48
1fb1585

Choose a tag to compare

Minor release changes

  • Adding tracing to job queue. #49
  • Removed job id from metrics. #46
  • Removed unnecessary metrics meters and replaced with counters where needed. #50

v1.0.0 Beta 6

31 Dec 09:04
6aeb0a1

Choose a tag to compare

Patch release changes

  • Fix issue where scheduled task could be scheduled twice. #44

Other changes

  • Move to Apple's swift-format for formatting source

v1.0.0 Beta 5

13 Nov 09:39
0cf8786

Choose a tag to compare

Patch release changes

  • Fix issue where onMinutes schedules were not being setup correctly. #38

v1.0.0 Beta 4

17 Sep 07:45
21a3e86

Choose a tag to compare

v1.0.0 Beta 4 Pre-release
Pre-release

Breaking changes

  • Added support for adding jobs with a delay. #23 from @thoven87

Minor version changes

  • Added support for setting job schedule with multiple values. #24
  • Retry with backoff. #21 from @thoven87
  • Conform metrics to Otel convensions. #26 from @thoven87

v1.0.0 Beta 3

30 Aug 13:56
954a963

Choose a tag to compare

v1.0.0 Beta 3 Pre-release
Pre-release

Minor release changes

v1.0.0 Beta 2

29 Aug 17:23
84dc086

Choose a tag to compare

v1.0.0 Beta 2 Pre-release
Pre-release

Minor release changes

  • Record metrics for jobs, including jobs queued, processing, retried, failed, succeeded, execution time and queued time. #9 from @thoven87
  • Add JobScheduler service. #5, #17

Patch release changes

  • Don't get next job until a current job has finished. #8
  • Logger metadata renamed _job_type to JobName. #9 from @thoven87
  • Re-organized Job encoding and decoding. #14