que 1.0.0.beta3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +43 -0
- data/CHANGELOG.md +250 -6
- data/Dockerfile +20 -0
- data/README.md +125 -27
- data/auto/dev +21 -0
- data/auto/psql +9 -0
- data/auto/test +5 -0
- data/auto/test-postgres-14 +17 -0
- data/bin/command_line_interface.rb +2 -2
- data/docker-compose.yml +46 -0
- data/docs/README.md +785 -33
- data/lib/que/active_record/connection.rb +1 -1
- data/lib/que/active_record/model.rb +1 -1
- data/lib/que/connection.rb +11 -1
- data/lib/que/job_buffer.rb +27 -22
- data/lib/que/locker.rb +9 -4
- data/lib/que/sequel/model.rb +14 -16
- data/lib/que/version.rb +1 -1
- data/lib/que/worker.rb +12 -4
- data/que.gemspec +2 -2
- data/scripts/docker-entrypoint +14 -0
- data/scripts/test +5 -0
- metadata +22 -30
- data/CHANGELOG.1.0.beta.md +0 -137
- data/docs/active_job.md +0 -6
- data/docs/advanced_setup.md +0 -49
- data/docs/command_line_interface.md +0 -49
- data/docs/error_handling.md +0 -94
- data/docs/inspecting_the_queue.md +0 -64
- data/docs/job_helper_methods.md +0 -27
- data/docs/logging.md +0 -62
- data/docs/managing_workers.md +0 -25
- data/docs/middleware.md +0 -36
- data/docs/migrating.md +0 -27
- data/docs/multiple_queues.md +0 -31
- data/docs/shutting_down_safely.md +0 -7
- data/docs/using_plain_connections.md +0 -65
- data/docs/using_sequel.md +0 -49
- data/docs/writing_reliable_jobs.md +0 -108
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2be51744809f55950825aa7bbb6c3e4d7d4d0927a439dfdf2c1f3658f53cfc84
|
4
|
+
data.tar.gz: f1c7b10f27e57fd11288f50789cef31574e11a333733dfbae93e870841dabf28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93688d24737b750e85c1769bebc6d1344264a8b9757c855150c1dd022104a6400e205442db443bf12c8623325a8178b5379ff647faecd47ada873ead78d5ce7e
|
7
|
+
data.tar.gz: 7fc7c9e34adb2f779f947c0d8326da32c40ba47c7fe4501e343fc177d3115275a25e28b8b407aa62a3ce7d095760f4f392fb9f501892918fc5d2dc3802871f93
|
@@ -0,0 +1,43 @@
|
|
1
|
+
name: tests
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby_version: [2.5.x, 2.6.x, 2.7.x]
|
11
|
+
gemfile: ["4.2", "5.2", "6.0"]
|
12
|
+
postgres_version: [9, 10, 11, 12]
|
13
|
+
exclude:
|
14
|
+
- { gemfile: "4.2", ruby_version: "2.7.x" }
|
15
|
+
services:
|
16
|
+
db:
|
17
|
+
image: postgres:${{ matrix.postgres_version }}
|
18
|
+
env:
|
19
|
+
POSTGRES_HOST_AUTH_METHOD: trust
|
20
|
+
ports: ['5432:5432']
|
21
|
+
options: >-
|
22
|
+
--health-cmd pg_isready
|
23
|
+
--health-interval 10s
|
24
|
+
--health-timeout 5s
|
25
|
+
--health-retries 5
|
26
|
+
steps:
|
27
|
+
- uses: actions/checkout@v1
|
28
|
+
- name: Set up Ruby
|
29
|
+
uses: actions/setup-ruby@v1
|
30
|
+
with:
|
31
|
+
ruby-version: ${{ matrix.ruby_version }}
|
32
|
+
- name: Test with Rake
|
33
|
+
env:
|
34
|
+
PGHOST: 127.0.0.1
|
35
|
+
PGUSER: postgres
|
36
|
+
BUNDLE_GEMFILE: spec/gemfiles/Gemfile.${{ matrix.gemfile }}
|
37
|
+
run: |
|
38
|
+
sudo apt-get -yqq install libpq-dev postgresql-client
|
39
|
+
createdb que-test
|
40
|
+
gem install bundler
|
41
|
+
bundle install --jobs 4 --retry 3
|
42
|
+
USE_RAILS=true bundle exec rake test
|
43
|
+
bundle exec rake test
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,69 @@
|
|
1
|
+
### 1.1.0 (2022-02-21)
|
2
|
+
|
3
|
+
- **Features**:
|
4
|
+
+ Add backtrace to errors, by [@trammel](https://github.com/trammel) in [#328](https://github.com/que-rb/que/pull/328)
|
5
|
+
- **Internal**:
|
6
|
+
+ Add Dockerised development environment, in [#324](https://github.com/que-rb/que/pull/324)
|
7
|
+
|
8
|
+
### 1.0.0 (2022-01-24)
|
9
|
+
|
10
|
+
_This release does not add any changes on top of 1.0.0.beta5._
|
11
|
+
|
12
|
+
### 1.0.0.beta5 (2021-12-23)
|
13
|
+
|
14
|
+
* **Bug fixes and improvements**
|
15
|
+
* 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)
|
16
|
+
* Fix lock leak on PostgreSQL 12 and later by [@jasoncodes](https://github.com/jasoncodes) in [#298](https://github.com/que-rb/que/pull/298)
|
17
|
+
* Fix deadlock issue [#318](https://github.com/que-rb/que/pull/318)
|
18
|
+
* Fix thread attrition issue [#321](https://github.com/que-rb/que/pull/321)
|
19
|
+
|
20
|
+
* **Rails fixes:**
|
21
|
+
* Set schema in table_name for ActiveRecord model by [@nikitug](https://github.com/nikitug) in [#274](https://github.com/que-rb/que/pull/274)
|
22
|
+
|
23
|
+
* **Documentation:**
|
24
|
+
* 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)
|
25
|
+
[`5259303`](https://github.com/que-rb/que/commit/52593031a7eef2d52ac38eceb2d8df776ec74090)
|
26
|
+
* Fix links to Writing Reliable Jobs by [@nikitug](https://github.com/nikitug) in [#273](https://github.com/que-rb/que/pull/273)
|
27
|
+
* Add build badge to README by [@jonathanhefner](https://github.com/jonathanhefner) in [#278](https://github.com/que-rb/que/pull/278)
|
28
|
+
* Fix ToC links in docs by [@swrobel](https://github.com/swrobel) in [#287](https://github.com/que-rb/que/pull/287)
|
29
|
+
* 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)
|
30
|
+
* Add instructions for how to start Que by [@xcskier56](https://github.com/xcskier56) in [#292](https://github.com/que-rb/que/pull/292)
|
31
|
+
|
32
|
+
* **CI/tests**
|
33
|
+
* Fix CI failure from Docker Postgres image by [@jonathanhefner](https://github.com/jonathanhefner) in [#275](https://github.com/que-rb/que/pull/275)
|
34
|
+
* Test with Ruby 2.7 by [@jonathanhefner](https://github.com/jonathanhefner) in [#276](https://github.com/que-rb/que/pull/276)
|
35
|
+
* Run GitHub build workflow on push by [@jonathanhefner](https://github.com/jonathanhefner) in [#277](https://github.com/que-rb/que/pull/277)
|
36
|
+
|
37
|
+
|
38
|
+
**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)
|
39
|
+
|
40
|
+
**Unless an issue is found we intend for this release to become v1.0.0 proper.**
|
41
|
+
|
42
|
+
---
|
43
|
+
|
44
|
+
### 1.0.0.beta4 (2020-01-17)
|
45
|
+
|
46
|
+
- Rails 6 compatibility: Fix time parsing #249 and https://github.com/que-rb/que/commit/5ddddd5ebac6153d7a683ef08c86bced8e03fb51
|
47
|
+
- Cleaner sequel usage #257
|
48
|
+
- Documentation improvements #264 #269 #261 #231
|
49
|
+
|
50
|
+
---
|
51
|
+
|
52
|
+
### 1.0.0.beta3 (2018-05-18)
|
53
|
+
|
54
|
+
* Added support for customizing log levels for `job_worked` events (#217).
|
55
|
+
|
56
|
+
* Began logging all `job_errored` events at the `ERROR` log level.
|
57
|
+
|
58
|
+
* Fixed the Railtie when running in test mode (#214).
|
59
|
+
|
60
|
+
* Tweaked the meanings of worker-priorities and worker-count options in the CLI, to better support use cases with low worker counts (#216).
|
61
|
+
|
62
|
+
---
|
63
|
+
|
1
64
|
### 1.0.0.beta2 (2018-04-13)
|
2
65
|
|
3
|
-
* **A schema upgrade to version 4 will be required for this release.** See [the migration doc](https://github.com/
|
66
|
+
* **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.
|
4
67
|
|
5
68
|
* 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.
|
6
69
|
|
@@ -96,6 +159,121 @@
|
|
96
159
|
|
97
160
|
* Features marked as deprecated in the final 0.x releases have been removed.
|
98
161
|
|
162
|
+
* 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.
|
163
|
+
|
164
|
+
* 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.
|
165
|
+
|
166
|
+
* 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.
|
167
|
+
|
168
|
+
* 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.
|
169
|
+
|
170
|
+
* 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.
|
171
|
+
|
172
|
+
* 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.
|
173
|
+
|
174
|
+
* 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.
|
175
|
+
|
176
|
+
* There is now a `data` JSONB column which is used to support various ways of organizing jobs (setting tags on them, etc).
|
177
|
+
---
|
178
|
+
|
179
|
+
### 1.0.0.beta (2017-10-25)
|
180
|
+
|
181
|
+
* **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.
|
182
|
+
|
183
|
+
* 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.
|
184
|
+
|
185
|
+
* 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:
|
186
|
+
|
187
|
+
* 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.
|
188
|
+
|
189
|
+
* 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.
|
190
|
+
|
191
|
+
* Individual workers no longer need to monopolize their own (usually idle) connections while working jobs, so Ruby processes will require fewer Postgres connections.
|
192
|
+
|
193
|
+
* PgBouncer or another external connection pool can be used for workers' connections (though not for the connection used to lock and listen for jobs).
|
194
|
+
|
195
|
+
* Other features introduced in this version include:
|
196
|
+
|
197
|
+
* Much better support for all versions of ActiveJob.
|
198
|
+
|
199
|
+
* In particular, you may (optionally) include `Que::ActiveJob::JobExtensions` into `ApplicationJob` to get support for all of Que's job helper methods.
|
200
|
+
|
201
|
+
* Custom middleware that wrap running jobs are now supported.
|
202
|
+
|
203
|
+
* Support for categorizing jobs with tags.
|
204
|
+
|
205
|
+
* Support for configuring a `maximum_retry_count` on individual job classes.
|
206
|
+
|
207
|
+
* Job configuration options are now inheritable, so job class hierarchies are more useful.
|
208
|
+
|
209
|
+
* There are now built-in models for ActiveRecord and Sequel to allow inspecting the queue easily.
|
210
|
+
|
211
|
+
* Jobs that have finished working may optionally be retained in the database indefinitely.
|
212
|
+
|
213
|
+
* 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.
|
214
|
+
|
215
|
+
* If you don't resolve a job yourself one way or another, Que will still `destroy` the job for you by default.
|
216
|
+
|
217
|
+
* Finished jobs have a timestamp set in the finished_at column.
|
218
|
+
|
219
|
+
* Jobs that have errored too many times will now be marked as expired, and won't be retried again.
|
220
|
+
|
221
|
+
* 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.
|
222
|
+
|
223
|
+
* 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.
|
224
|
+
|
225
|
+
* You can now set job priority thresholds for individual workers, to ensure that there will always be space available for high-priority jobs.
|
226
|
+
|
227
|
+
* `Que.job_states` returns a list of locked jobs and the hostname/pid of the Ruby processes that have locked them.
|
228
|
+
|
229
|
+
* `Que.connection_proc=` has been added, to allow for the easy integration of custom connection pools.
|
230
|
+
|
231
|
+
* In keeping with semantic versioning, the major version is being bumped since the new implementation requires some backwards-incompatible changes. These changes include:
|
232
|
+
|
233
|
+
* Support for MRI Rubies before 2.2 has been dropped.
|
234
|
+
|
235
|
+
* Support for Postgres versions before 9.5 has been dropped (JSONB and upsert support is required).
|
236
|
+
|
237
|
+
* JRuby support has been dropped. It will be reintroduced whenever the jruby-pg gem is production-ready.
|
238
|
+
|
239
|
+
* The `que:work` rake task has been removed. Use the `que` executable instead.
|
240
|
+
|
241
|
+
* Therefore, configuring workers using QUE_* environment variables is no longer supported. Please pass the appropriate options to the `que` executable instead.
|
242
|
+
|
243
|
+
* The `mode` setter has been removed.
|
244
|
+
|
245
|
+
* To run jobs synchronously when they are enqueued (the old `:sync` behavior) you can set `Que.run_synchronously = true`.
|
246
|
+
|
247
|
+
* 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.
|
248
|
+
|
249
|
+
* The following methods are not meaningful under the new implementation and have been removed:
|
250
|
+
|
251
|
+
* The `Que.wake_interval` getter and setter.
|
252
|
+
|
253
|
+
* The `Que.worker_count` getter and setter.
|
254
|
+
|
255
|
+
* `Que.wake!`
|
256
|
+
|
257
|
+
* `Que.wake_all!`
|
258
|
+
|
259
|
+
* Since Que needs a dedicated Postgres connection to manage job locks, running Que through a single PG connection is no longer supported.
|
260
|
+
|
261
|
+
* It's not clear that anyone ever actually did this.
|
262
|
+
|
263
|
+
* `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`.
|
264
|
+
|
265
|
+
* 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.
|
266
|
+
|
267
|
+
* Arguments passed to jobs are now deep-frozen, to prevent unexpected behavior when the args are mutated and the job is reenqueued.
|
268
|
+
|
269
|
+
* Since JSONB is now used to store arguments, the order of argument hashes is no longer maintained.
|
270
|
+
|
271
|
+
* It wouldn't have been a good idea to rely on this anyway.
|
272
|
+
|
273
|
+
* Calling Que.log() directly is no longer supported/recommended.
|
274
|
+
|
275
|
+
* Features marked as deprecated in the final 0.x releases have been removed.
|
276
|
+
|
99
277
|
* 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
278
|
|
101
279
|
* 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 +290,7 @@
|
|
112
290
|
|
113
291
|
* There is now a `data` JSONB column which is used to support various ways of organizing jobs (setting tags on them, etc).
|
114
292
|
|
115
|
-
|
293
|
+
---
|
116
294
|
|
117
295
|
### 0.14.3 (2018-03-02)
|
118
296
|
|
@@ -120,6 +298,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
120
298
|
|
121
299
|
* Recorded error messages are now truncated to the first 500 characters.
|
122
300
|
|
301
|
+
---
|
302
|
+
|
123
303
|
### 0.14.2 (2018-01-05)
|
124
304
|
|
125
305
|
* Deprecate the Que.disable_prepared_statements= accessors.
|
@@ -128,24 +308,34 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
128
308
|
|
129
309
|
* Update the generated Rails migration to declare a version. (NARKOZ)
|
130
310
|
|
311
|
+
---
|
312
|
+
|
131
313
|
### 0.14.1 (2017-12-14)
|
132
314
|
|
133
315
|
* Fix a bug with typecasting boolean values on Rails 5+.
|
134
316
|
|
317
|
+
---
|
318
|
+
|
135
319
|
### 0.14.0 (2017-08-11)
|
136
320
|
|
137
321
|
* Fix incompatibility with Rails 5.1.
|
138
322
|
|
139
323
|
* Drop support for waking an in-process worker when an ActiveRecord transaction commits.
|
140
324
|
|
325
|
+
---
|
326
|
+
|
141
327
|
### 0.13.1 (2017-07-05)
|
142
328
|
|
143
329
|
* Fix issue that caused error stacktraces to not be persisted in most cases.
|
144
330
|
|
331
|
+
---
|
332
|
+
|
145
333
|
### 0.13.0 (2017-06-08)
|
146
334
|
|
147
335
|
* 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
336
|
|
337
|
+
---
|
338
|
+
|
149
339
|
### 0.12.3 (2017-06-01)
|
150
340
|
|
151
341
|
* Fix incompatibility with MultiJson introduced by the previous release.
|
@@ -154,28 +344,40 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
154
344
|
|
155
345
|
* 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
346
|
|
347
|
+
---
|
348
|
+
|
157
349
|
### 0.12.1 (2017-01-22)
|
158
350
|
|
159
351
|
* Fix incompatibility with Rails 5.0. (#166) (nbibler, thedarkone)
|
160
352
|
|
353
|
+
---
|
354
|
+
|
161
355
|
### 0.12.0 (2016-09-09)
|
162
356
|
|
163
357
|
* 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
358
|
|
165
359
|
* Introduced a new framework for handling errors on a per-job basis. See the docs for more information. (#106, #147)
|
166
360
|
|
361
|
+
---
|
362
|
+
|
167
363
|
### 0.11.6 (2016-07-01)
|
168
364
|
|
169
365
|
* Fix for operating in nested transactions in Rails 5.0. (#160) (greysteil)
|
170
366
|
|
367
|
+
---
|
368
|
+
|
171
369
|
### 0.11.5 (2016-05-13)
|
172
370
|
|
173
371
|
* Fix error when running `que -v`. (#154) (hardbap)
|
174
372
|
|
373
|
+
---
|
374
|
+
|
175
375
|
### 0.11.4 (2016-03-03)
|
176
376
|
|
177
377
|
* Fix incompatibility with ActiveRecord 5.0.0.beta3. (#143, #144) (joevandyk)
|
178
378
|
|
379
|
+
---
|
380
|
+
|
179
381
|
### 0.11.3 (2016-02-26)
|
180
382
|
|
181
383
|
* Fixed bug with displaying the current version of the que executable. (#122) (hardbap)
|
@@ -186,14 +388,20 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
186
388
|
|
187
389
|
* String literals are now frozen on Ruby 2.3.
|
188
390
|
|
391
|
+
---
|
392
|
+
|
189
393
|
### 0.11.2 (2015-09-09)
|
190
394
|
|
191
395
|
* Fix Job class constantizing when ActiveSupport isn't loaded. (#121) (godfat)
|
192
396
|
|
397
|
+
---
|
398
|
+
|
193
399
|
### 0.11.1 (2015-09-04)
|
194
400
|
|
195
401
|
* 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
402
|
|
403
|
+
---
|
404
|
+
|
197
405
|
### 0.11.0 (2015-09-04)
|
198
406
|
|
199
407
|
* 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 +416,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
208
416
|
|
209
417
|
* If it exists, use String#constantize to constantize job classes, since ActiveSupport's constantize method behaves better with Rails' autoloading. (#115, #120) (joevandyk)
|
210
418
|
|
419
|
+
---
|
420
|
+
|
211
421
|
### 0.10.0 (2015-03-18)
|
212
422
|
|
213
423
|
* 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 +426,40 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
216
426
|
|
217
427
|
* Add Que.transaction() helper method, to aid in transaction management in migrations or when the user's ORM doesn't provide one. (#81)
|
218
428
|
|
429
|
+
---
|
430
|
+
|
219
431
|
### 0.9.2 (2015-02-05)
|
220
432
|
|
221
433
|
* Fix a bug wherein the at_exit hook in the railtie wasn't waiting for jobs to finish before exiting.
|
222
434
|
|
223
435
|
* Fix a bug wherein the que:work rake task wasn't waiting for jobs to finish before exiting. (#85) (tycooon)
|
224
436
|
|
437
|
+
---
|
438
|
+
|
225
439
|
### 0.9.1 (2015-01-11)
|
226
440
|
|
227
441
|
* 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
442
|
|
443
|
+
---
|
444
|
+
|
229
445
|
### 0.9.0 (2014-12-16)
|
230
446
|
|
231
447
|
* 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
448
|
|
449
|
+
---
|
450
|
+
|
233
451
|
### 0.8.2 (2014-10-12)
|
234
452
|
|
235
453
|
* Fix errors raised during rollbacks in the ActiveRecord adapter, which remained silent until Rails 4.2. (#64, #65) (Strech)
|
236
454
|
|
455
|
+
---
|
456
|
+
|
237
457
|
### 0.8.1 (2014-07-28)
|
238
458
|
|
239
459
|
* Fix regression introduced in the `que:work` rake task by the `mode` / `worker_count` disentangling in 0.8.0. (#50)
|
240
460
|
|
461
|
+
---
|
462
|
+
|
241
463
|
### 0.8.0 (2014-07-12)
|
242
464
|
|
243
465
|
* 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 +468,28 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
246
468
|
|
247
469
|
* Fixed a similar bug wherein setting a wake_interval during application startup would break worker awakening after the process was forked.
|
248
470
|
|
471
|
+
---
|
472
|
+
|
249
473
|
### 0.7.3 (2014-05-19)
|
250
474
|
|
251
475
|
* When mode = :sync, don't touch the database at all when running jobs inline. Needed for ActiveJob compatibility (#46).
|
252
476
|
|
477
|
+
---
|
478
|
+
|
253
479
|
### 0.7.2 (2014-05-18)
|
254
480
|
|
255
481
|
* Fix issue wherein intermittent worker wakeups would not work after forking (#44).
|
256
482
|
|
483
|
+
---
|
484
|
+
|
257
485
|
### 0.7.1 (2014-04-29)
|
258
486
|
|
259
487
|
* Fix errors with prepared statements when ActiveRecord reconnects to the database. (dvrensk)
|
260
488
|
|
261
489
|
* 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
490
|
|
491
|
+
---
|
492
|
+
|
263
493
|
### 0.7.0 (2014-04-09)
|
264
494
|
|
265
495
|
* `JobClass.queue(*args)` has been deprecated and will be removed in version 1.0.0. Please use `JobClass.enqueue(*args)` instead.
|
@@ -270,9 +500,11 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
270
500
|
|
271
501
|
* 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
502
|
|
503
|
+
---
|
504
|
+
|
273
505
|
### 0.6.0 (2014-02-04)
|
274
506
|
|
275
|
-
* **A schema upgrade to version 3 is required for this release.** See [the migration doc](https://github.com/
|
507
|
+
* **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.
|
276
508
|
|
277
509
|
* You can now run a job's logic directly (without enqueueing it) like `MyJob.run(arg1, arg2, other_arg: arg3)`. This is useful when a job class encapsulates logic that you want to invoke without involving the entire queue.
|
278
510
|
|
@@ -284,11 +516,13 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
284
516
|
|
285
517
|
* Log lines now include the machine's hostname, since a pid alone may not uniquely identify a process.
|
286
518
|
|
287
|
-
* Multiple queues are now supported. See [the docs](https://github.com/
|
519
|
+
* Multiple queues are now supported. See [the docs](https://github.com/que-rb/que/blob/master/docs/multiple_queues.md) for details. (chanks, joevandyk)
|
288
520
|
|
289
521
|
* Rubinius 2.2 is now supported. (brixen)
|
290
522
|
|
291
|
-
* 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/
|
523
|
+
* 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.
|
524
|
+
|
525
|
+
---
|
292
526
|
|
293
527
|
### 0.5.0 (2014-01-14)
|
294
528
|
|
@@ -302,7 +536,7 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
302
536
|
|
303
537
|
* Added a migration system to make it easier to change the schema when updating Que. You can now write, for example, `Que.migrate!(version: 2)` in your migrations. Migrations are run transactionally.
|
304
538
|
|
305
|
-
* The logging format has changed to be more easily machine-readable. You can also now customize the logging format by assigning a callable to Que.log_formatter=. See the new doc on [logging](https://github.com/
|
539
|
+
* The logging format has changed to be more easily machine-readable. You can also now customize the logging format by assigning a callable to Que.log_formatter=. See the new doc on [logging](https://github.com/que-rb/que/blob/master/docs/logging.md)) for details. The default logger level is INFO - for less critical information (such as when no jobs were found to be available or when a job-lock race condition has been detected and avoided) you can set the QUE_LOG_LEVEL environment variable to DEBUG.
|
306
540
|
|
307
541
|
* MultiJson is now a soft dependency. Que will use it if it is available, but it is not required.
|
308
542
|
|
@@ -312,6 +546,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
312
546
|
|
313
547
|
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
548
|
|
549
|
+
---
|
550
|
+
|
315
551
|
### 0.4.0 (2014-01-05)
|
316
552
|
|
317
553
|
* Que.wake_all! was added, as a simple way to wake up all workers in the pool.
|
@@ -332,6 +568,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
332
568
|
|
333
569
|
* Much more internal cleanup.
|
334
570
|
|
571
|
+
---
|
572
|
+
|
335
573
|
### 0.3.0 (2013-12-21)
|
336
574
|
|
337
575
|
* Add Que.stop!, which immediately kills all jobs being worked in the process.
|
@@ -344,6 +582,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
344
582
|
|
345
583
|
* Clean up internals and hammer out several race conditions.
|
346
584
|
|
585
|
+
---
|
586
|
+
|
347
587
|
### 0.2.0 (2013-11-30)
|
348
588
|
|
349
589
|
* Officially support JRuby 1.7.5+. Earlier versions may work.
|
@@ -356,6 +596,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
356
596
|
|
357
597
|
* :sync mode now ignores scheduled jobs (jobs queued with a specific run_at).
|
358
598
|
|
599
|
+
---
|
600
|
+
|
359
601
|
### 0.1.0 (2013-11-18)
|
360
602
|
|
361
603
|
* Initial public release, after a test-driven rewrite.
|
@@ -366,6 +608,8 @@ For a detailed list of the changes between each beta release of 1.0.0, see [the
|
|
366
608
|
|
367
609
|
Added a Railtie for easier setup with Rails, as well as a migration generator.
|
368
610
|
|
611
|
+
---
|
612
|
+
|
369
613
|
### 0.0.1 (2013-11-07)
|
370
614
|
|
371
615
|
* Copy-pasted from an app of mine. Very Sequel-specific. Nobody look at it, let's pretend it never happened.
|
data/Dockerfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
FROM ruby:2.7.5-slim-buster@sha256:4cbbe2fba099026b243200aa8663f56476950cc64ccd91d7aaccddca31e445b5 AS base
|
2
|
+
|
3
|
+
# Install libpq-dev in our base layer, as it's needed in all environments
|
4
|
+
RUN apt-get update \
|
5
|
+
&& apt-get install -y libpq-dev \
|
6
|
+
&& rm -rf /var/lib/apt/lists/*
|
7
|
+
|
8
|
+
ENV RUBY_BUNDLER_VERSION 2.3.7
|
9
|
+
RUN gem install bundler -v $RUBY_BUNDLER_VERSION
|
10
|
+
|
11
|
+
ENV BUNDLE_PATH /usr/local/bundle
|
12
|
+
|
13
|
+
ENV RUBYOPT=-W:deprecated
|
14
|
+
|
15
|
+
FROM base AS dev-environment
|
16
|
+
|
17
|
+
# Install build-essential and git, as we'd need them for building gems that have native code components
|
18
|
+
RUN apt-get update \
|
19
|
+
&& apt-get install -y build-essential git \
|
20
|
+
&& rm -rf /var/lib/apt/lists/*
|