que-scheduler 3.2.2 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +13 -7
- data/lib/que/scheduler/migrations.rb +9 -7
- data/lib/que/scheduler/state_checks.rb +2 -0
- data/lib/que/scheduler/version.rb +1 -1
- metadata +25 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 15498dda40836c4e4f447f78a2cb5f259df54a2ba6be22d24c4343a3fffad2d1
|
4
|
+
data.tar.gz: b23b41708e1dd364fdd7a101ecdb7a5b6899ea9fad78fe6ca2ff3470db0f08dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28d70ce26b05e89c0b72ac8ca20b5e730891e032a5bf9a5f3d9e187e145f5f9d5e5ae357bdee1ad752ee11086ef1c9c7188c511adda85bd4ba9abb34d9cc54be
|
7
|
+
data.tar.gz: 7a53a1bd6d4c56c105172ccb2e9a2aa70ab862691bda8473b9476444c3afd4a382f1b0177daa325583cda54719c48ff99f2409bff6f34a29cb64d9cb7029d763
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@ que-scheduler
|
|
2
2
|
================
|
3
3
|
|
4
4
|
[](https://badge.fury.io/rb/que-scheduler)
|
5
|
-
[](https://gitlab.com/hlascelles/que-scheduler/pipelines)
|
6
6
|
[](https://coveralls.io/github/hlascelles/que-scheduler?branch=master)
|
7
7
|
[](https://codeclimate.com/github/hlascelles/que-scheduler/maintainability)
|
8
8
|
|
@@ -86,11 +86,13 @@ all_options_job:
|
|
86
86
|
priority: 25
|
87
87
|
args: ['open']
|
88
88
|
|
89
|
-
# Ensure you never miss a job, even after downtime
|
89
|
+
# Ensure you never miss a job, even after downtime, by using "schedule_type: every_event"
|
90
90
|
DailyBatchReport:
|
91
91
|
cron: "0 3 * * *"
|
92
|
-
# This job will be run every day
|
93
|
-
#
|
92
|
+
# This job will be run every day at 03:00 as normal.
|
93
|
+
# However, the "schedule_type: every_event" setting below will ensure that if workers are offline
|
94
|
+
# for any amount of time then the bcaklog will always be enqueued on recovery.
|
95
|
+
# See "Schedule types" below for more information.
|
94
96
|
schedule_type: every_event
|
95
97
|
```
|
96
98
|
|
@@ -104,11 +106,15 @@ A job can have a `schedule_type` assigned to it. Valid values are:
|
|
104
106
|
the way resque-scheduler would perform if it were taken down for some time.
|
105
107
|
1. `every_event` - Every cron match will result in a job being scheduled. If multiple cron times go
|
106
108
|
by during an extended period of downtime, then a job will be scheduled for every one missed on
|
107
|
-
startup. This `schedule_type` should be used for
|
109
|
+
startup. This `schedule_type` should be used for regular batch jobs that need to know which time
|
108
110
|
they are running a batch for. The job will always be scheduled with an ISO8601 string of the cron
|
109
111
|
that matched as the first argument.
|
110
|
-
|
111
|
-
|
112
|
+
|
113
|
+
An example would be an eventing DailyReportJob which summarises a day's sales. If no jobs run for
|
114
|
+
a few days due to a technical failure, then on recovery a report would still be needed for each
|
115
|
+
individual day. "schedule_type: every_event" would ensure this happens.
|
116
|
+
|
117
|
+
This feature ensures that jobs which *must run* for a certain cron match will always eventually
|
112
118
|
execute, even after a total system crash, or even a DB backup restore.
|
113
119
|
|
114
120
|
## Gem configuration
|
@@ -28,9 +28,17 @@ module Que
|
|
28
28
|
|
29
29
|
def db_version
|
30
30
|
return Que.execute(TABLE_COMMENT).first[:description].to_i if audit_table_exists?
|
31
|
+
|
31
32
|
Que::Scheduler::Db.count_schedulers.zero? ? 0 : 1
|
32
33
|
end
|
33
34
|
|
35
|
+
def audit_table_exists?
|
36
|
+
result = Que.execute(<<-SQL)
|
37
|
+
SELECT * FROM information_schema.tables WHERE table_name = '#{AUDIT_TABLE_NAME}';
|
38
|
+
SQL
|
39
|
+
result.any?
|
40
|
+
end
|
41
|
+
|
34
42
|
private
|
35
43
|
|
36
44
|
def migrate_up(current, version)
|
@@ -46,17 +54,11 @@ module Que
|
|
46
54
|
def execute_step(number, direction)
|
47
55
|
Que.execute(IO.read("#{__dir__}/migrations/#{number}/#{direction}.sql"))
|
48
56
|
return unless audit_table_exists?
|
57
|
+
|
49
58
|
Que.execute(
|
50
59
|
"COMMENT ON TABLE que_scheduler_audit IS '#{direction == :up ? number : number - 1}'"
|
51
60
|
)
|
52
61
|
end
|
53
|
-
|
54
|
-
def audit_table_exists?
|
55
|
-
result = Que.execute(<<-SQL)
|
56
|
-
SELECT * FROM information_schema.tables WHERE table_name = '#{AUDIT_TABLE_NAME}';
|
57
|
-
SQL
|
58
|
-
result.any?
|
59
|
-
end
|
60
62
|
end
|
61
63
|
end
|
62
64
|
end
|
@@ -16,6 +16,7 @@ module Que
|
|
16
16
|
def assert_db_migrated
|
17
17
|
db_version = Que::Scheduler::Migrations.db_version
|
18
18
|
return if db_version == Que::Scheduler::Migrations::MAX_VERSION
|
19
|
+
|
19
20
|
raise(<<-ERR)
|
20
21
|
The que-scheduler db migration state was found to be #{db_version}. It should be #{Que::Scheduler::Migrations::MAX_VERSION}.
|
21
22
|
|
@@ -47,6 +48,7 @@ module Que
|
|
47
48
|
def assert_one_scheduler_job
|
48
49
|
schedulers = Que::Scheduler::Db.count_schedulers
|
49
50
|
return if schedulers == 1
|
51
|
+
|
50
52
|
raise(<<-ERR)
|
51
53
|
Only one #{Que::Scheduler::SchedulerJob.name} should be enqueued. #{schedulers} were found.
|
52
54
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: que-scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Lascelles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -45,6 +45,9 @@ dependencies:
|
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.1'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 1.1.8
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -52,6 +55,9 @@ dependencies:
|
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '1.1'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 1.1.8
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: hashie
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +114,6 @@ dependencies:
|
|
108
114
|
- - ">="
|
109
115
|
- !ruby/object:Gem::Version
|
110
116
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: bundler
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
117
|
- !ruby/object:Gem::Dependency
|
126
118
|
name: combustion
|
127
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +198,20 @@ dependencies:
|
|
206
198
|
- - ">="
|
207
199
|
- !ruby/object:Gem::Version
|
208
200
|
version: '0'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: psych
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: 3.0.0
|
208
|
+
type: :development
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 3.0.0
|
209
215
|
- !ruby/object:Gem::Dependency
|
210
216
|
name: rake
|
211
217
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +260,14 @@ dependencies:
|
|
254
260
|
requirements:
|
255
261
|
- - "~>"
|
256
262
|
- !ruby/object:Gem::Version
|
257
|
-
version: 0.
|
263
|
+
version: '0.61'
|
258
264
|
type: :development
|
259
265
|
prerelease: false
|
260
266
|
version_requirements: !ruby/object:Gem::Requirement
|
261
267
|
requirements:
|
262
268
|
- - "~>"
|
263
269
|
- !ruby/object:Gem::Version
|
264
|
-
version: 0.
|
270
|
+
version: '0.61'
|
265
271
|
- !ruby/object:Gem::Dependency
|
266
272
|
name: sqlite3
|
267
273
|
requirement: !ruby/object:Gem::Requirement
|
@@ -358,7 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
358
364
|
version: '0'
|
359
365
|
requirements: []
|
360
366
|
rubyforge_project:
|
361
|
-
rubygems_version: 2.6
|
367
|
+
rubygems_version: 2.7.6
|
362
368
|
signing_key:
|
363
369
|
specification_version: 4
|
364
370
|
summary: A cron scheduler for Que
|