que-scheduler 2.0.2 → 2.1.0
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 +4 -4
- data/README.md +1 -1
- data/lib/que/scheduler/audit.rb +23 -8
- data/lib/que/scheduler/defined_job.rb +9 -10
- data/lib/que/scheduler/migrations/3/down.sql +8 -0
- data/lib/que/scheduler/migrations/3/up.sql +19 -0
- data/lib/que/scheduler/migrations.rb +9 -3
- data/lib/que/scheduler/scheduler_job.rb +1 -1
- data/lib/que/scheduler/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bd2f9250706164b35b25db80c41136311383cbe5d2d0d93a3a0f14c222d2cdc
|
4
|
+
data.tar.gz: 5ef3839cbdb4a13b7864675a4e641e89b19f1355da058fa2974b1092a8286f16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64d917abf9404977b0d95648545f363ed44c1d1088b0f5a302825c028795318818f4799fb1ee23acc52b5aa84de81202a63b56499c78329d12132a00091cc6bb
|
7
|
+
data.tar.gz: e99bd69d7201245c8ee930a5076c3ba1efcec98a808eec045b2144845a3c346b7f3e727335faab2ea77d22bd32a54975e14d3e33d353a3aec1d9bc7317ceb91e
|
data/README.md
CHANGED
data/lib/que/scheduler/audit.rb
CHANGED
@@ -4,19 +4,34 @@ module Que
|
|
4
4
|
module Scheduler
|
5
5
|
module Audit
|
6
6
|
TABLE_NAME = 'que_scheduler_audit'
|
7
|
+
ENQUEUED_TABLE_NAME = 'que_scheduler_audit_enqueued'
|
7
8
|
INSERT_AUDIT = %{
|
8
|
-
INSERT INTO #{TABLE_NAME} (scheduler_job_id,
|
9
|
-
VALUES ($1::integer, $2::
|
9
|
+
INSERT INTO #{TABLE_NAME} (scheduler_job_id, executed_at)
|
10
|
+
VALUES ($1::integer, $2::timestamptz)
|
11
|
+
RETURNING *
|
12
|
+
}
|
13
|
+
INSERT_AUDIT_ENQUEUED = %{
|
14
|
+
INSERT INTO #{ENQUEUED_TABLE_NAME} (scheduler_job_id, job_class, queue, priority, args)
|
15
|
+
VALUES ($1::integer, $2::varchar, $3::varchar, $4::integer, $5::jsonb)
|
10
16
|
RETURNING *
|
11
17
|
}
|
12
18
|
|
13
19
|
class << self
|
14
|
-
def append(job_id, executed_at, result
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
+
def append(job_id, executed_at, result)
|
21
|
+
::Que.execute(INSERT_AUDIT, [job_id, executed_at])
|
22
|
+
result.missed_jobs.each do |j|
|
23
|
+
inserted = ::Que.execute(
|
24
|
+
INSERT_AUDIT_ENQUEUED,
|
25
|
+
[
|
26
|
+
job_id,
|
27
|
+
j.job_class,
|
28
|
+
j.queue,
|
29
|
+
j.priority,
|
30
|
+
j.args
|
31
|
+
]
|
32
|
+
)
|
33
|
+
raise "Cannot save audit row #{job_id} #{executed_at} #{j}" if inserted.empty?
|
34
|
+
end
|
20
35
|
end
|
21
36
|
end
|
22
37
|
end
|
@@ -87,18 +87,17 @@ module Que
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def generate_to_enqueue_list(missed_times)
|
90
|
-
[]
|
91
|
-
unless missed_times.empty?
|
92
|
-
options = to_h.slice(:args, :queue, :priority, :job_class).compact
|
90
|
+
return [] if missed_times.empty?
|
93
91
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
92
|
+
options = to_h.slice(:args, :queue, :priority, :job_class).compact
|
93
|
+
args_array = args.is_a?(Array) ? args : Array(args)
|
94
|
+
|
95
|
+
if schedule_type == DefinedJob::SCHEDULE_TYPE_EVERY_EVENT
|
96
|
+
missed_times.map do |time_missed|
|
97
|
+
ToEnqueue.new(options.merge(args: [time_missed] + args_array))
|
101
98
|
end
|
99
|
+
else
|
100
|
+
[ToEnqueue.new(options.merge(args: args_array))]
|
102
101
|
end
|
103
102
|
end
|
104
103
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
DROP TABLE que_scheduler_audit_enqueued;
|
2
|
+
ALTER TABLE que_scheduler_audit DROP CONSTRAINT que_scheduler_audit_pkey;
|
3
|
+
|
4
|
+
ALTER TABLE que_scheduler_audit
|
5
|
+
ADD COLUMN next_run_at timestamptz,
|
6
|
+
ADD COLUMN jobs_enqueued jsonb;
|
7
|
+
|
8
|
+
CREATE INDEX index_que_scheduler_audit_on_jobs_enqueued ON que_scheduler_audit USING btree (jobs_enqueued);
|
@@ -0,0 +1,19 @@
|
|
1
|
+
ALTER TABLE que_scheduler_audit ADD PRIMARY KEY (scheduler_job_id);
|
2
|
+
|
3
|
+
CREATE TABLE que_scheduler_audit_enqueued (
|
4
|
+
scheduler_job_id integer NOT NULL REFERENCES que_scheduler_audit (scheduler_job_id),
|
5
|
+
job_class varchar(255) NOT NULL,
|
6
|
+
queue varchar(255),
|
7
|
+
priority integer,
|
8
|
+
args jsonb NOT NULL
|
9
|
+
);
|
10
|
+
|
11
|
+
CREATE INDEX que_scheduler_audit_enqueued_job_class ON que_scheduler_audit_enqueued USING btree (job_class);
|
12
|
+
CREATE INDEX que_scheduler_audit_enqueued_args ON que_scheduler_audit_enqueued USING btree (args);
|
13
|
+
|
14
|
+
WITH rows AS (SELECT scheduler_job_id, json_array_elements(jobs_enqueued::json) AS enqueued FROM que_scheduler_audit)
|
15
|
+
INSERT INTO que_scheduler_audit_enqueued(scheduler_job_id, args, job_class)
|
16
|
+
SELECT scheduler_job_id, (enqueued->>'args')::json AS args, enqueued->>'job_class' AS job_class FROM rows;
|
17
|
+
|
18
|
+
ALTER TABLE que_scheduler_audit DROP COLUMN next_run_at;
|
19
|
+
ALTER TABLE que_scheduler_audit DROP COLUMN jobs_enqueued;
|
@@ -25,7 +25,7 @@ module Que
|
|
25
25
|
|
26
26
|
def db_version
|
27
27
|
return 0 if Que::Scheduler::Db.count_schedulers.zero?
|
28
|
-
return 1 unless
|
28
|
+
return 1 unless audit_table_exists?
|
29
29
|
Que.execute(TABLE_COMMENT).first[:description].to_i
|
30
30
|
end
|
31
31
|
|
@@ -43,8 +43,14 @@ module Que
|
|
43
43
|
|
44
44
|
def execute_step(number, direction)
|
45
45
|
Que.execute(IO.read("#{__dir__}/migrations/#{number}/#{direction}.sql"))
|
46
|
-
return unless
|
47
|
-
Que.execute
|
46
|
+
return unless audit_table_exists?
|
47
|
+
Que.execute(
|
48
|
+
"COMMENT ON TABLE que_scheduler_audit IS '#{direction == :up ? number : number - 1}'"
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
def audit_table_exists?
|
53
|
+
ActiveRecord::Base.connection.table_exists?(AUDIT_TABLE_NAME)
|
48
54
|
end
|
49
55
|
end
|
50
56
|
end
|
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: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Lascelles
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -295,6 +295,8 @@ files:
|
|
295
295
|
- lib/que/scheduler/migrations/1/up.sql
|
296
296
|
- lib/que/scheduler/migrations/2/down.sql
|
297
297
|
- lib/que/scheduler/migrations/2/up.sql
|
298
|
+
- lib/que/scheduler/migrations/3/down.sql
|
299
|
+
- lib/que/scheduler/migrations/3/up.sql
|
298
300
|
- lib/que/scheduler/scheduler_job.rb
|
299
301
|
- lib/que/scheduler/scheduler_job_args.rb
|
300
302
|
- lib/que/scheduler/version.rb
|