que 1.0.0.beta5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +237 -1
- data/README.md +1 -1
- data/lib/que/version.rb +1 -1
- metadata +8 -9
- data/CHANGELOG.1.0.beta.md +0 -137
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd68dcc8f19097468e664cdd7a3777b9d1ce8b431fdb3a42a08ffcb75723f559
|
4
|
+
data.tar.gz: e0191191fe9b64c436173a3f956b4d06b18c131f3de1bbbd71f5966b363db168
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37fd03216218cea290a92ecc3961aede25b5e5ed9a11d30dd2fd6ae8bd3b22c6f0a021f947f068836e00c28e1c75d3168330eec2169bf7fa394e3da40dd1a38f
|
7
|
+
data.tar.gz: 16fe7c2452eff1b240854acba12227dc1f061bf9b7ab756656358886327a8ea6a48eea26e2b97c4376acfcdda5dc89ec10fa24341bfc03da49b043e4be07b748
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,58 @@
|
|
1
|
+
### 1.0.0 (2022-01-24)
|
2
|
+
_This release does not add any changes on top of 1.0.0.beta5._
|
3
|
+
|
4
|
+
### 1.0.0.beta5 (2021-12-23)
|
5
|
+
|
6
|
+
* **Bug fixes and improvements**
|
7
|
+
* Add more context to error message when config files fail to load. by [@trammel](https://github.com/trammel) in [#293](https://github.com/que-rb/que/pull/293)
|
8
|
+
* Fix lock leak on PostgreSQL 12 and later by [@jasoncodes](https://github.com/jasoncodes) in [#298](https://github.com/que-rb/que/pull/298)
|
9
|
+
* Fix deadlock issue [#318](https://github.com/que-rb/que/pull/318)
|
10
|
+
* Fix thread attrition issue [#321](https://github.com/que-rb/que/pull/321)
|
11
|
+
|
12
|
+
* **Rails fixes:**
|
13
|
+
* Set schema in table_name for ActiveRecord model by [@nikitug](https://github.com/nikitug) in [#274](https://github.com/que-rb/que/pull/274)
|
14
|
+
|
15
|
+
* **Documentation:**
|
16
|
+
* Add link to que-locks for exclusive job locking by [@airhorns](https://github.com/airhorns) in [#263](https://github.com/que-rb/que/pull/263)
|
17
|
+
[`5259303`](https://github.com/que-rb/que/commit/52593031a7eef2d52ac38eceb2d8df776ec74090)
|
18
|
+
* Fix links to Writing Reliable Jobs by [@nikitug](https://github.com/nikitug) in [#273](https://github.com/que-rb/que/pull/273)
|
19
|
+
* Add build badge to README by [@jonathanhefner](https://github.com/jonathanhefner) in [#278](https://github.com/que-rb/que/pull/278)
|
20
|
+
* Fix ToC links in docs by [@swrobel](https://github.com/swrobel) in [#287](https://github.com/que-rb/que/pull/287)
|
21
|
+
* Note all Rails queue names that must be changed by [@swrobel](https://github.com/swrobel) in [#296](https://github.com/que-rb/que/pull/296)
|
22
|
+
* Add instructions for how to start Que by [@xcskier56](https://github.com/xcskier56) in [#292](https://github.com/que-rb/que/pull/292)
|
23
|
+
|
24
|
+
* **CI/tests**
|
25
|
+
* Fix CI failure from Docker Postgres image by [@jonathanhefner](https://github.com/jonathanhefner) in [#275](https://github.com/que-rb/que/pull/275)
|
26
|
+
* Test with Ruby 2.7 by [@jonathanhefner](https://github.com/jonathanhefner) in [#276](https://github.com/que-rb/que/pull/276)
|
27
|
+
* Run GitHub build workflow on push by [@jonathanhefner](https://github.com/jonathanhefner) in [#277](https://github.com/que-rb/que/pull/277)
|
28
|
+
|
29
|
+
|
30
|
+
**Full Changelog**: [`v1.0.0.beta4...v1.0.0.beta5`](https://github.com/que-rb/que/compare/v1.0.0.beta4...v1.0.0.beta5)
|
31
|
+
|
32
|
+
**Unless an issue is found we intend for this release to become v1.0.0 proper.**
|
33
|
+
|
34
|
+
---
|
35
|
+
|
36
|
+
### 1.0.0.beta4 (2020-01-17)
|
37
|
+
|
38
|
+
- Rails 6 compatibility: Fix time parsing #249 and https://github.com/que-rb/que/commit/5ddddd5ebac6153d7a683ef08c86bced8e03fb51
|
39
|
+
- Cleaner sequel usage #257
|
40
|
+
- Documentation improvements #264 #269 #261 #231
|
41
|
+
|
42
|
+
---
|
43
|
+
|
44
|
+
### 1.0.0.beta3 (2018-05-18)
|
45
|
+
|
46
|
+
* Added support for customizing log levels for `job_worked` events (#217).
|
47
|
+
|
48
|
+
* Began logging all `job_errored` events at the `ERROR` log level.
|
49
|
+
|
50
|
+
* Fixed the Railtie when running in test mode (#214).
|
51
|
+
|
52
|
+
* Tweaked the meanings of worker-priorities and worker-count options in the CLI, to better support use cases with low worker counts (#216).
|
53
|
+
|
54
|
+
---
|
55
|
+
|
1
56
|
### 1.0.0.beta2 (2018-04-13)
|
2
57
|
|
3
58
|
* **A schema upgrade to version 4 will be required for this release.** See [the migration doc](https://github.com/que-rb/que/blob/master/docs/migrating.md) for information if you're upgrading from a previous release.
|
@@ -96,6 +151,121 @@
|
|
96
151
|
|
97
152
|
* Features marked as deprecated in the final 0.x releases have been removed.
|
98
153
|
|
154
|
+
* Finally, if you've built up your own tooling and customizations around Que, you may need to be aware of some DB schema changes made in the migration to schema version #4.
|
155
|
+
|
156
|
+
* The `job_id` column has been renamed `id` and is now the primary key. This makes it easier to manage the queue using an ActiveRecord model.
|
157
|
+
|
158
|
+
* Finished jobs are now kept in the DB, unless you explicitly call `destroy`. If you want to query the DB for only jobs that haven't finished yet, add a `WHERE finished_at IS NULL` condition to your query, or use the not_finished scope on one of the provided ORM models.
|
159
|
+
|
160
|
+
* There is now an `expired_at` timestamp column, which is set when a job reaches its maximum number of retries and will not be attempted again.
|
161
|
+
|
162
|
+
* Due to popular demand, the default queue name is now "default" rather than an empty string. The migration will move pending jobs under the "" queue to the "default" queue.
|
163
|
+
|
164
|
+
* The `last_error` column has been split in two, to `last_error_message` and `last_error_backtrace`. These two columns are now limited to 500 and 10,000 characters, respectively. The migration will split old error data correctly, and truncate it if necessary.
|
165
|
+
|
166
|
+
* Names for queues and job classes are now limited to 500 characters, which is still far longer than either of these values should reasonably be.
|
167
|
+
|
168
|
+
* There is now a `data` JSONB column which is used to support various ways of organizing jobs (setting tags on them, etc).
|
169
|
+
---
|
170
|
+
|
171
|
+
### 1.0.0.beta (2017-10-25)
|
172
|
+
|
173
|
+
* **A schema upgrade to version 4 will be required for this release.** See [the migration doc](https://github.com/que-rb/que/blob/master/docs/migrating.md) for information if you're upgrading from a previous release.
|
174
|
+
|
175
|
+
* Please note that this migration requires a rewrite of the jobs table, which makes it O(n) with the size of the table. If you have a very large backlog of jobs you may want to schedule downtime for this migration.
|
176
|
+
|
177
|
+
* Que's implementation has been changed from one in which worker threads hold their own PG connections and lock their own jobs to one in which a single thread (and PG connection) locks jobs through LISTEN/NOTIFY and batch polling, and passes jobs along to worker threads. This has many benefits, including:
|
178
|
+
|
179
|
+
* Jobs queued for immediate processing can be actively distributed to workers with LISTEN/NOTIFY, which is more efficient than having workers repeatedly poll for new jobs.
|
180
|
+
|
181
|
+
* When polling is necessary (to pick up jobs that are scheduled for the future or that need to be retried due to errors), jobs can be locked and fetched in batches, rather than one at a time.
|
182
|
+
|
183
|
+
* Individual workers no longer need to monopolize their own (usually idle) connections while working jobs, so Ruby processes will require fewer Postgres connections.
|
184
|
+
|
185
|
+
* PgBouncer or another external connection pool can be used for workers' connections (though not for the connection used to lock and listen for jobs).
|
186
|
+
|
187
|
+
* Other features introduced in this version include:
|
188
|
+
|
189
|
+
* Much better support for all versions of ActiveJob.
|
190
|
+
|
191
|
+
* In particular, you may (optionally) include `Que::ActiveJob::JobExtensions` into `ApplicationJob` to get support for all of Que's job helper methods.
|
192
|
+
|
193
|
+
* Custom middleware that wrap running jobs are now supported.
|
194
|
+
|
195
|
+
* Support for categorizing jobs with tags.
|
196
|
+
|
197
|
+
* Support for configuring a `maximum_retry_count` on individual job classes.
|
198
|
+
|
199
|
+
* Job configuration options are now inheritable, so job class hierarchies are more useful.
|
200
|
+
|
201
|
+
* There are now built-in models for ActiveRecord and Sequel to allow inspecting the queue easily.
|
202
|
+
|
203
|
+
* Jobs that have finished working may optionally be retained in the database indefinitely.
|
204
|
+
|
205
|
+
* To keep a job record, replace the `destroy` calls in your jobs with `finish`. `destroy` will still delete records entirely, for jobs that you don't want to keep.
|
206
|
+
|
207
|
+
* If you don't resolve a job yourself one way or another, Que will still `destroy` the job for you by default.
|
208
|
+
|
209
|
+
* Finished jobs have a timestamp set in the finished_at column.
|
210
|
+
|
211
|
+
* Jobs that have errored too many times will now be marked as expired, and won't be retried again.
|
212
|
+
|
213
|
+
* You can configure a maximum_retry_count in your job classes, to set the threshold at which a job will be marked expired. The default is 15.
|
214
|
+
|
215
|
+
* To manually mark a job as expired (and keep it in the database but not try to run it again) you can call `expire` helper in your job.
|
216
|
+
|
217
|
+
* You can now set job priority thresholds for individual workers, to ensure that there will always be space available for high-priority jobs.
|
218
|
+
|
219
|
+
* `Que.job_states` returns a list of locked jobs and the hostname/pid of the Ruby processes that have locked them.
|
220
|
+
|
221
|
+
* `Que.connection_proc=` has been added, to allow for the easy integration of custom connection pools.
|
222
|
+
|
223
|
+
* In keeping with semantic versioning, the major version is being bumped since the new implementation requires some backwards-incompatible changes. These changes include:
|
224
|
+
|
225
|
+
* Support for MRI Rubies before 2.2 has been dropped.
|
226
|
+
|
227
|
+
* Support for Postgres versions before 9.5 has been dropped (JSONB and upsert support is required).
|
228
|
+
|
229
|
+
* JRuby support has been dropped. It will be reintroduced whenever the jruby-pg gem is production-ready.
|
230
|
+
|
231
|
+
* The `que:work` rake task has been removed. Use the `que` executable instead.
|
232
|
+
|
233
|
+
* Therefore, configuring workers using QUE_* environment variables is no longer supported. Please pass the appropriate options to the `que` executable instead.
|
234
|
+
|
235
|
+
* The `mode` setter has been removed.
|
236
|
+
|
237
|
+
* To run jobs synchronously when they are enqueued (the old `:sync` behavior) you can set `Que.run_synchronously = true`.
|
238
|
+
|
239
|
+
* To start up the worker pool (the old :async behavior) you should use the `que` executable to start up a worker process. There's no longer a supported API for running workers outside of the `que` executable.
|
240
|
+
|
241
|
+
* The following methods are not meaningful under the new implementation and have been removed:
|
242
|
+
|
243
|
+
* The `Que.wake_interval` getter and setter.
|
244
|
+
|
245
|
+
* The `Que.worker_count` getter and setter.
|
246
|
+
|
247
|
+
* `Que.wake!`
|
248
|
+
|
249
|
+
* `Que.wake_all!`
|
250
|
+
|
251
|
+
* Since Que needs a dedicated Postgres connection to manage job locks, running Que through a single PG connection is no longer supported.
|
252
|
+
|
253
|
+
* It's not clear that anyone ever actually did this.
|
254
|
+
|
255
|
+
* `Que.worker_states` has been removed, as the connection that locks a job is no longer the one that the job is using to run. Its functionality has been partially replaced with `Que.job_states`.
|
256
|
+
|
257
|
+
* When using Rails, for simplicity, job attributes and keys in argument hashes are now converted to symbols when retrieved from the database, rather than being converted to instances of HashWithIndifferentAccess.
|
258
|
+
|
259
|
+
* Arguments passed to jobs are now deep-frozen, to prevent unexpected behavior when the args are mutated and the job is reenqueued.
|
260
|
+
|
261
|
+
* Since JSONB is now used to store arguments, the order of argument hashes is no longer maintained.
|
262
|
+
|
263
|
+
* It wouldn't have been a good idea to rely on this anyway.
|
264
|
+
|
265
|
+
* Calling Que.log() directly is no longer supported/recommended.
|
266
|
+
|
267
|
+
* Features marked as deprecated in the final 0.x releases have been removed.
|
268
|
+
|
99
269
|
* Finally, if you've built up your own tooling and customizations around Que, you may need to be aware of some DB schema changes made in the migration to schema version #4.
|
100
270
|
|
101
271
|
* The `job_id` column has been renamed `id` and is now the primary key. This makes it easier to manage the queue using an ActiveRecord model.
|
@@ -112,7 +282,7 @@
|
|
112
282
|
|
113
283
|
* There is now a `data` JSONB column which is used to support various ways of organizing jobs (setting tags on them, etc).
|
114
284
|
|
115
|
-
|
285
|
+
---
|
116
286
|
|
117
287
|
### 0.14.3 (2018-03-02)
|
118
288
|
|
@@ -120,6 +290,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
120
290
|
|
121
291
|
* Recorded error messages are now truncated to the first 500 characters.
|
122
292
|
|
293
|
+
---
|
294
|
+
|
123
295
|
### 0.14.2 (2018-01-05)
|
124
296
|
|
125
297
|
* Deprecate the Que.disable_prepared_statements= accessors.
|
@@ -128,24 +300,34 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
128
300
|
|
129
301
|
* Update the generated Rails migration to declare a version. (NARKOZ)
|
130
302
|
|
303
|
+
---
|
304
|
+
|
131
305
|
### 0.14.1 (2017-12-14)
|
132
306
|
|
133
307
|
* Fix a bug with typecasting boolean values on Rails 5+.
|
134
308
|
|
309
|
+
---
|
310
|
+
|
135
311
|
### 0.14.0 (2017-08-11)
|
136
312
|
|
137
313
|
* Fix incompatibility with Rails 5.1.
|
138
314
|
|
139
315
|
* Drop support for waking an in-process worker when an ActiveRecord transaction commits.
|
140
316
|
|
317
|
+
---
|
318
|
+
|
141
319
|
### 0.13.1 (2017-07-05)
|
142
320
|
|
143
321
|
* Fix issue that caused error stacktraces to not be persisted in most cases.
|
144
322
|
|
323
|
+
---
|
324
|
+
|
145
325
|
### 0.13.0 (2017-06-08)
|
146
326
|
|
147
327
|
* Fix recurring JSON issues by dropping MultiJson support. Previously MultiJson was detected and used automatically, and now it's just ignored and stdlib JSON used instead, so this shouldn't require any code changes.
|
148
328
|
|
329
|
+
---
|
330
|
+
|
149
331
|
### 0.12.3 (2017-06-01)
|
150
332
|
|
151
333
|
* Fix incompatibility with MultiJson introduced by the previous release.
|
@@ -154,28 +336,40 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
154
336
|
|
155
337
|
* Fix security vulnerability in parsing JSON from the DB (by specifying create_additions: false). This shouldn't be a concern unless you were passing untrusted user input in your job arguments. (hmac)
|
156
338
|
|
339
|
+
---
|
340
|
+
|
157
341
|
### 0.12.1 (2017-01-22)
|
158
342
|
|
159
343
|
* Fix incompatibility with Rails 5.0. (#166) (nbibler, thedarkone)
|
160
344
|
|
345
|
+
---
|
346
|
+
|
161
347
|
### 0.12.0 (2016-09-09)
|
162
348
|
|
163
349
|
* The error_handler configuration option has been renamed to error_notifier, which is more descriptive of what it's actually supposed to do. You can still use error_handler for configuration, but you'll get a warning.
|
164
350
|
|
165
351
|
* Introduced a new framework for handling errors on a per-job basis. See the docs for more information. (#106, #147)
|
166
352
|
|
353
|
+
---
|
354
|
+
|
167
355
|
### 0.11.6 (2016-07-01)
|
168
356
|
|
169
357
|
* Fix for operating in nested transactions in Rails 5.0. (#160) (greysteil)
|
170
358
|
|
359
|
+
---
|
360
|
+
|
171
361
|
### 0.11.5 (2016-05-13)
|
172
362
|
|
173
363
|
* Fix error when running `que -v`. (#154) (hardbap)
|
174
364
|
|
365
|
+
---
|
366
|
+
|
175
367
|
### 0.11.4 (2016-03-03)
|
176
368
|
|
177
369
|
* Fix incompatibility with ActiveRecord 5.0.0.beta3. (#143, #144) (joevandyk)
|
178
370
|
|
371
|
+
---
|
372
|
+
|
179
373
|
### 0.11.3 (2016-02-26)
|
180
374
|
|
181
375
|
* Fixed bug with displaying the current version of the que executable. (#122) (hardbap)
|
@@ -186,14 +380,20 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
186
380
|
|
187
381
|
* String literals are now frozen on Ruby 2.3.
|
188
382
|
|
383
|
+
---
|
384
|
+
|
189
385
|
### 0.11.2 (2015-09-09)
|
190
386
|
|
191
387
|
* Fix Job class constantizing when ActiveSupport isn't loaded. (#121) (godfat)
|
192
388
|
|
389
|
+
---
|
390
|
+
|
193
391
|
### 0.11.1 (2015-09-04)
|
194
392
|
|
195
393
|
* The `rake que:work` rake task that was specific to Rails has been deprecated and will be removed in Que 1.0. A deprecation warning will display when it is run.
|
196
394
|
|
395
|
+
---
|
396
|
+
|
197
397
|
### 0.11.0 (2015-09-04)
|
198
398
|
|
199
399
|
* A command-line program has been added that can be used to work jobs in a more flexible manner than the previous rake task. Run `que -h` for more information.
|
@@ -208,6 +408,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
208
408
|
|
209
409
|
* If it exists, use String#constantize to constantize job classes, since ActiveSupport's constantize method behaves better with Rails' autoloading. (#115, #120) (joevandyk)
|
210
410
|
|
411
|
+
---
|
412
|
+
|
211
413
|
### 0.10.0 (2015-03-18)
|
212
414
|
|
213
415
|
* When working jobs via the rake task, Rails applications are now eager-loaded if present, to avoid problems with multithreading and autoloading. (#96) (hmarr)
|
@@ -216,28 +418,40 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
216
418
|
|
217
419
|
* Add Que.transaction() helper method, to aid in transaction management in migrations or when the user's ORM doesn't provide one. (#81)
|
218
420
|
|
421
|
+
---
|
422
|
+
|
219
423
|
### 0.9.2 (2015-02-05)
|
220
424
|
|
221
425
|
* Fix a bug wherein the at_exit hook in the railtie wasn't waiting for jobs to finish before exiting.
|
222
426
|
|
223
427
|
* Fix a bug wherein the que:work rake task wasn't waiting for jobs to finish before exiting. (#85) (tycooon)
|
224
428
|
|
429
|
+
---
|
430
|
+
|
225
431
|
### 0.9.1 (2015-01-11)
|
226
432
|
|
227
433
|
* Use now() rather than 'now' when inserting jobs, to avoid using an old value as the default run_at in prepared statements. (#74) (bgentry)
|
228
434
|
|
435
|
+
---
|
436
|
+
|
229
437
|
### 0.9.0 (2014-12-16)
|
230
438
|
|
231
439
|
* The error_handler callable is now passed two objects, the error and the job that raised it. If your current error_handler is a proc, as recommended in the docs, you shouldn't need to make any code changes, unless you want to use the job in your error handling. If your error_handler is a lambda, or another callable with a strict arity requirement, you'll want to change it before upgrading. (#69) (statianzo)
|
232
440
|
|
441
|
+
---
|
442
|
+
|
233
443
|
### 0.8.2 (2014-10-12)
|
234
444
|
|
235
445
|
* Fix errors raised during rollbacks in the ActiveRecord adapter, which remained silent until Rails 4.2. (#64, #65) (Strech)
|
236
446
|
|
447
|
+
---
|
448
|
+
|
237
449
|
### 0.8.1 (2014-07-28)
|
238
450
|
|
239
451
|
* Fix regression introduced in the `que:work` rake task by the `mode` / `worker_count` disentangling in 0.8.0. (#50)
|
240
452
|
|
453
|
+
---
|
454
|
+
|
241
455
|
### 0.8.0 (2014-07-12)
|
242
456
|
|
243
457
|
* A callable can now be set as the logger, like `Que.logger = proc { MyLogger.new }`. Que uses this in its Railtie for cleaner initialization, but it is also available for public use.
|
@@ -246,20 +460,28 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
246
460
|
|
247
461
|
* Fixed a similar bug wherein setting a wake_interval during application startup would break worker awakening after the process was forked.
|
248
462
|
|
463
|
+
---
|
464
|
+
|
249
465
|
### 0.7.3 (2014-05-19)
|
250
466
|
|
251
467
|
* When mode = :sync, don't touch the database at all when running jobs inline. Needed for ActiveJob compatibility (#46).
|
252
468
|
|
469
|
+
---
|
470
|
+
|
253
471
|
### 0.7.2 (2014-05-18)
|
254
472
|
|
255
473
|
* Fix issue wherein intermittent worker wakeups would not work after forking (#44).
|
256
474
|
|
475
|
+
---
|
476
|
+
|
257
477
|
### 0.7.1 (2014-04-29)
|
258
478
|
|
259
479
|
* Fix errors with prepared statements when ActiveRecord reconnects to the database. (dvrensk)
|
260
480
|
|
261
481
|
* Don't use prepared statements when inside a transaction. This negates the risk of a prepared statement error harming the entire transaction. The query that benefits the most from preparation is the job-lock CTE, which is never run in a transaction, so the performance impact should be negligible.
|
262
482
|
|
483
|
+
---
|
484
|
+
|
263
485
|
### 0.7.0 (2014-04-09)
|
264
486
|
|
265
487
|
* `JobClass.queue(*args)` has been deprecated and will be removed in version 1.0.0. Please use `JobClass.enqueue(*args)` instead.
|
@@ -270,6 +492,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
270
492
|
|
271
493
|
* The [Pond gem](https://github.com/chanks/pond) is now supported as a connection. It is very similar to the ConnectionPool gem, but creates connections lazily and is dynamically resizable.
|
272
494
|
|
495
|
+
---
|
496
|
+
|
273
497
|
### 0.6.0 (2014-02-04)
|
274
498
|
|
275
499
|
* **A schema upgrade to version 3 is required for this release.** See [the migration doc](https://github.com/que-rb/que/blob/master/docs/migrating.md) for information if you're upgrading from a previous release.
|
@@ -290,6 +514,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
290
514
|
|
291
515
|
* Job classes may now define their own logic for determining the retry interval when a job raises an error. See [error handling](https://github.com/que-rb/que/blob/master/docs/error_handling.md) for more information.
|
292
516
|
|
517
|
+
---
|
518
|
+
|
293
519
|
### 0.5.0 (2014-01-14)
|
294
520
|
|
295
521
|
* When running a worker pool inside your web process on ActiveRecord, Que will now wake a worker once a transaction containing a queued job is committed. (joevandyk, chanks)
|
@@ -312,6 +538,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
312
538
|
|
313
539
|
Now, when a process exits, if the worker pool is running (whether in a rake task or in a web process) the exit will be stalled until all workers have finished their current jobs. If you have long-running jobs, this may take a long time. If you need the process to exit immediately, you can SIGKILL without any threat of commiting prematurely.
|
314
540
|
|
541
|
+
---
|
542
|
+
|
315
543
|
### 0.4.0 (2014-01-05)
|
316
544
|
|
317
545
|
* Que.wake_all! was added, as a simple way to wake up all workers in the pool.
|
@@ -332,6 +560,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
332
560
|
|
333
561
|
* Much more internal cleanup.
|
334
562
|
|
563
|
+
---
|
564
|
+
|
335
565
|
### 0.3.0 (2013-12-21)
|
336
566
|
|
337
567
|
* Add Que.stop!, which immediately kills all jobs being worked in the process.
|
@@ -344,6 +574,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
344
574
|
|
345
575
|
* Clean up internals and hammer out several race conditions.
|
346
576
|
|
577
|
+
---
|
578
|
+
|
347
579
|
### 0.2.0 (2013-11-30)
|
348
580
|
|
349
581
|
* Officially support JRuby 1.7.5+. Earlier versions may work.
|
@@ -356,6 +588,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
356
588
|
|
357
589
|
* :sync mode now ignores scheduled jobs (jobs queued with a specific run_at).
|
358
590
|
|
591
|
+
---
|
592
|
+
|
359
593
|
### 0.1.0 (2013-11-18)
|
360
594
|
|
361
595
|
* Initial public release, after a test-driven rewrite.
|
@@ -366,6 +600,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
366
600
|
|
367
601
|
Added a Railtie for easier setup with Rails, as well as a migration generator.
|
368
602
|
|
603
|
+
---
|
604
|
+
|
369
605
|
### 0.0.1 (2013-11-07)
|
370
606
|
|
371
607
|
* Copy-pasted from an app of mine. Very Sequel-specific. Nobody look at it, let's pretend it never happened.
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Que ![tests](https://github.com/que-rb/que/workflows/tests/badge.svg)
|
2
2
|
|
3
|
-
**This README and the rest of the docs on the master branch all refer to Que 1.0
|
3
|
+
**This README and the rest of the docs on the master branch all refer to Que 1.0. If you're using version 0.x, please refer to the docs on [the 0.x branch](https://github.com/que-rb/que/tree/0.x).**
|
4
4
|
|
5
5
|
*TL;DR: Que is a high-performance job queue that improves the reliability of your application by protecting your jobs with the same [ACID guarantees](https://en.wikipedia.org/wiki/ACID) as the rest of your data.*
|
6
6
|
|
data/lib/que/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: que
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Hanks
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -34,7 +34,6 @@ extra_rdoc_files: []
|
|
34
34
|
files:
|
35
35
|
- ".github/workflows/tests.yml"
|
36
36
|
- ".gitignore"
|
37
|
-
- CHANGELOG.1.0.beta.md
|
38
37
|
- CHANGELOG.md
|
39
38
|
- LICENSE.txt
|
40
39
|
- README.md
|
@@ -84,7 +83,7 @@ homepage: https://github.com/que-rb/que
|
|
84
83
|
licenses:
|
85
84
|
- MIT
|
86
85
|
metadata: {}
|
87
|
-
post_install_message:
|
86
|
+
post_install_message:
|
88
87
|
rdoc_options: []
|
89
88
|
require_paths:
|
90
89
|
- lib
|
@@ -95,12 +94,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
95
94
|
version: '0'
|
96
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
96
|
requirements:
|
98
|
-
- - "
|
97
|
+
- - ">="
|
99
98
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
99
|
+
version: '0'
|
101
100
|
requirements: []
|
102
|
-
rubygems_version: 3.1.
|
103
|
-
signing_key:
|
101
|
+
rubygems_version: 3.1.4
|
102
|
+
signing_key:
|
104
103
|
specification_version: 4
|
105
104
|
summary: A PostgreSQL-based Job Queue
|
106
105
|
test_files: []
|
data/CHANGELOG.1.0.beta.md
DELETED
@@ -1,137 +0,0 @@
|
|
1
|
-
### 1.0.0.beta3 (2018-05-18)
|
2
|
-
|
3
|
-
* Added support for customizing log levels for `job_worked` events (#217).
|
4
|
-
|
5
|
-
* Began logging all `job_errored` events at the `ERROR` log level.
|
6
|
-
|
7
|
-
* Fixed the Railtie when running in test mode (#214).
|
8
|
-
|
9
|
-
* Tweaked the meanings of worker-priorities and worker-count options in the CLI, to better support use cases with low worker counts (#216).
|
10
|
-
|
11
|
-
### 1.0.0.beta2 (2018-04-13)
|
12
|
-
|
13
|
-
* Fixed an incompatibility that caused the new locker to hang when using Rails in development mode (#213).
|
14
|
-
|
15
|
-
* Fixed a bug with setting the log level via the CLI when the configured logger was based on a callable (#210).
|
16
|
-
|
17
|
-
* Renamed Que.middleware to Que.job_middleware.
|
18
|
-
|
19
|
-
* Added Que.sql_middleware.
|
20
|
-
|
21
|
-
* Officially added support for Ruby 2.5.
|
22
|
-
|
23
|
-
* Internal cleanup and renamings.
|
24
|
-
|
25
|
-
### 1.0.0.beta (2017-10-25)
|
26
|
-
|
27
|
-
* **A schema upgrade to version 4 will be required for this release.** See [the migration doc](https://github.com/que-rb/que/blob/master/docs/migrating.md) for information if you're upgrading from a previous release.
|
28
|
-
|
29
|
-
* Please note that this migration requires a rewrite of the jobs table, which makes it O(n) with the size of the table. If you have a very large backlog of jobs you may want to schedule downtime for this migration.
|
30
|
-
|
31
|
-
* Que's implementation has been changed from one in which worker threads hold their own PG connections and lock their own jobs to one in which a single thread (and PG connection) locks jobs through LISTEN/NOTIFY and batch polling, and passes jobs along to worker threads. This has many benefits, including:
|
32
|
-
|
33
|
-
* Jobs queued for immediate processing can be actively distributed to workers with LISTEN/NOTIFY, which is more efficient than having workers repeatedly poll for new jobs.
|
34
|
-
|
35
|
-
* When polling is necessary (to pick up jobs that are scheduled for the future or that need to be retried due to errors), jobs can be locked and fetched in batches, rather than one at a time.
|
36
|
-
|
37
|
-
* Individual workers no longer need to monopolize their own (usually idle) connections while working jobs, so Ruby processes will require fewer Postgres connections.
|
38
|
-
|
39
|
-
* PgBouncer or another external connection pool can be used for workers' connections (though not for the connection used to lock and listen for jobs).
|
40
|
-
|
41
|
-
* Other features introduced in this version include:
|
42
|
-
|
43
|
-
* Much better support for all versions of ActiveJob.
|
44
|
-
|
45
|
-
* In particular, you may (optionally) include `Que::ActiveJob::JobExtensions` into `ApplicationJob` to get support for all of Que's job helper methods.
|
46
|
-
|
47
|
-
* Custom middleware that wrap running jobs are now supported.
|
48
|
-
|
49
|
-
* Support for categorizing jobs with tags.
|
50
|
-
|
51
|
-
* Support for configuring a `maximum_retry_count` on individual job classes.
|
52
|
-
|
53
|
-
* Job configuration options are now inheritable, so job class hierarchies are more useful.
|
54
|
-
|
55
|
-
* There are now built-in models for ActiveRecord and Sequel to allow inspecting the queue easily.
|
56
|
-
|
57
|
-
* Jobs that have finished working may optionally be retained in the database indefinitely.
|
58
|
-
|
59
|
-
* To keep a job record, replace the `destroy` calls in your jobs with `finish`. `destroy` will still delete records entirely, for jobs that you don't want to keep.
|
60
|
-
|
61
|
-
* If you don't resolve a job yourself one way or another, Que will still `destroy` the job for you by default.
|
62
|
-
|
63
|
-
* Finished jobs have a timestamp set in the finished_at column.
|
64
|
-
|
65
|
-
* Jobs that have errored too many times will now be marked as expired, and won't be retried again.
|
66
|
-
|
67
|
-
* You can configure a maximum_retry_count in your job classes, to set the threshold at which a job will be marked expired. The default is 15.
|
68
|
-
|
69
|
-
* To manually mark a job as expired (and keep it in the database but not try to run it again) you can call `expire` helper in your job.
|
70
|
-
|
71
|
-
* You can now set job priority thresholds for individual workers, to ensure that there will always be space available for high-priority jobs.
|
72
|
-
|
73
|
-
* `Que.job_states` returns a list of locked jobs and the hostname/pid of the Ruby processes that have locked them.
|
74
|
-
|
75
|
-
* `Que.connection_proc=` has been added, to allow for the easy integration of custom connection pools.
|
76
|
-
|
77
|
-
* In keeping with semantic versioning, the major version is being bumped since the new implementation requires some backwards-incompatible changes. These changes include:
|
78
|
-
|
79
|
-
* Support for MRI Rubies before 2.2 has been dropped.
|
80
|
-
|
81
|
-
* Support for Postgres versions before 9.5 has been dropped (JSONB and upsert support is required).
|
82
|
-
|
83
|
-
* JRuby support has been dropped. It will be reintroduced whenever the jruby-pg gem is production-ready.
|
84
|
-
|
85
|
-
* The `que:work` rake task has been removed. Use the `que` executable instead.
|
86
|
-
|
87
|
-
* Therefore, configuring workers using QUE_* environment variables is no longer supported. Please pass the appropriate options to the `que` executable instead.
|
88
|
-
|
89
|
-
* The `mode` setter has been removed.
|
90
|
-
|
91
|
-
* To run jobs synchronously when they are enqueued (the old `:sync` behavior) you can set `Que.run_synchronously = true`.
|
92
|
-
|
93
|
-
* To start up the worker pool (the old :async behavior) you should use the `que` executable to start up a worker process. There's no longer a supported API for running workers outside of the `que` executable.
|
94
|
-
|
95
|
-
* The following methods are not meaningful under the new implementation and have been removed:
|
96
|
-
|
97
|
-
* The `Que.wake_interval` getter and setter.
|
98
|
-
|
99
|
-
* The `Que.worker_count` getter and setter.
|
100
|
-
|
101
|
-
* `Que.wake!`
|
102
|
-
|
103
|
-
* `Que.wake_all!`
|
104
|
-
|
105
|
-
* Since Que needs a dedicated Postgres connection to manage job locks, running Que through a single PG connection is no longer supported.
|
106
|
-
|
107
|
-
* It's not clear that anyone ever actually did this.
|
108
|
-
|
109
|
-
* `Que.worker_states` has been removed, as the connection that locks a job is no longer the one that the job is using to run. Its functionality has been partially replaced with `Que.job_states`.
|
110
|
-
|
111
|
-
* When using Rails, for simplicity, job attributes and keys in argument hashes are now converted to symbols when retrieved from the database, rather than being converted to instances of HashWithIndifferentAccess.
|
112
|
-
|
113
|
-
* Arguments passed to jobs are now deep-frozen, to prevent unexpected behavior when the args are mutated and the job is reenqueued.
|
114
|
-
|
115
|
-
* Since JSONB is now used to store arguments, the order of argument hashes is no longer maintained.
|
116
|
-
|
117
|
-
* It wouldn't have been a good idea to rely on this anyway.
|
118
|
-
|
119
|
-
* Calling Que.log() directly is no longer supported/recommended.
|
120
|
-
|
121
|
-
* Features marked as deprecated in the final 0.x releases have been removed.
|
122
|
-
|
123
|
-
* Finally, if you've built up your own tooling and customizations around Que, you may need to be aware of some DB schema changes made in the migration to schema version #4.
|
124
|
-
|
125
|
-
* The `job_id` column has been renamed `id` and is now the primary key. This makes it easier to manage the queue using an ActiveRecord model.
|
126
|
-
|
127
|
-
* Finished jobs are now kept in the DB, unless you explicitly call `destroy`. If you want to query the DB for only jobs that haven't finished yet, add a `WHERE finished_at IS NULL` condition to your query, or use the not_finished scope on one of the provided ORM models.
|
128
|
-
|
129
|
-
* There is now an `expired_at` timestamp column, which is set when a job reaches its maximum number of retries and will not be attempted again.
|
130
|
-
|
131
|
-
* Due to popular demand, the default queue name is now "default" rather than an empty string. The migration will move pending jobs under the "" queue to the "default" queue.
|
132
|
-
|
133
|
-
* The `last_error` column has been split in two, to `last_error_message` and `last_error_backtrace`. These two columns are now limited to 500 and 10,000 characters, respectively. The migration will split old error data correctly, and truncate it if necessary.
|
134
|
-
|
135
|
-
* Names for queues and job classes are now limited to 500 characters, which is still far longer than either of these values should reasonably be.
|
136
|
-
|
137
|
-
* There is now a `data` JSONB column which is used to support various ways of organizing jobs (setting tags on them, etc).
|