que-scheduler 2.1.2 → 3.0.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 +14 -14
- data/lib/que/scheduler/migrations/4/down.sql +5 -0
- data/lib/que/scheduler/migrations/4/up.sql +7 -0
- data/lib/que/scheduler/scheduler_job.rb +17 -12
- 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: f10811f1ba2ecc81c7d0fea63a94dd31f85e383d819de9bae939b24751817ee8
|
4
|
+
data.tar.gz: 7d461f16288e3161845f1c5ea55dbd422ec23fda41ce86394dc0532d2f563ba8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec49442550c653717fd8a943a8d46b4ada8431c78098841e9e773b214c89097d0e174936396c05c79cc91d42ebb9c5d5bf8b6bf677d05ae07ba049c011d405f3
|
7
|
+
data.tar.gz: b32792dd60a8895b84cba9b26a6cc01602eae2eacac097e7c4593db2aa2897a4e21eae9a4d626aef1f1ead58f9f13d01cacd588e962446f5ddbfecf6faf40fa5
|
data/README.md
CHANGED
data/lib/que/scheduler/audit.rb
CHANGED
@@ -7,30 +7,30 @@ module Que
|
|
7
7
|
ENQUEUED_TABLE_NAME = 'que_scheduler_audit_enqueued'
|
8
8
|
INSERT_AUDIT = %{
|
9
9
|
INSERT INTO #{TABLE_NAME} (scheduler_job_id, executed_at)
|
10
|
-
VALUES ($1::
|
10
|
+
VALUES ($1::bigint, $2::timestamptz)
|
11
11
|
RETURNING *
|
12
12
|
}
|
13
13
|
INSERT_AUDIT_ENQUEUED = %{
|
14
|
-
INSERT INTO #{ENQUEUED_TABLE_NAME}
|
15
|
-
|
14
|
+
INSERT INTO #{ENQUEUED_TABLE_NAME}
|
15
|
+
(scheduler_job_id, job_class, queue, priority, args, job_id, run_at)
|
16
|
+
VALUES (
|
17
|
+
$1::bigint, $2::varchar, $3::varchar,
|
18
|
+
$4::integer, $5::jsonb, $6::bigint, $7::timestamptz
|
19
|
+
)
|
16
20
|
RETURNING *
|
17
21
|
}
|
18
22
|
|
19
23
|
class << self
|
20
|
-
def append(
|
21
|
-
::Que.execute(INSERT_AUDIT, [
|
22
|
-
|
24
|
+
def append(scheduler_job_id, executed_at, enqueued_jobs)
|
25
|
+
::Que.execute(INSERT_AUDIT, [scheduler_job_id, executed_at])
|
26
|
+
enqueued_jobs.each do |j|
|
27
|
+
attrs = j.attrs
|
23
28
|
inserted = ::Que.execute(
|
24
29
|
INSERT_AUDIT_ENQUEUED,
|
25
|
-
[
|
26
|
-
job_id,
|
27
|
-
j.job_class,
|
28
|
-
j.queue,
|
29
|
-
j.priority,
|
30
|
-
j.args
|
31
|
-
]
|
30
|
+
[scheduler_job_id] +
|
31
|
+
attrs.values_at('job_class', 'queue', 'priority', 'args', 'job_id', 'run_at')
|
32
32
|
)
|
33
|
-
raise "Cannot save audit row #{
|
33
|
+
raise "Cannot save audit row #{scheduler_job_id} #{executed_at} #{j}" if inserted.empty?
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
ALTER TABLE que_scheduler_audit ALTER COLUMN scheduler_job_id TYPE integer;
|
2
|
+
ALTER TABLE que_scheduler_audit_enqueued ALTER COLUMN scheduler_job_id TYPE integer;
|
3
|
+
|
4
|
+
ALTER TABLE que_scheduler_audit_enqueued DROP COLUMN job_id;
|
5
|
+
ALTER TABLE que_scheduler_audit_enqueued DROP COLUMN run_at;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
ALTER TABLE que_scheduler_audit ALTER COLUMN scheduler_job_id TYPE bigint;
|
2
|
+
ALTER TABLE que_scheduler_audit_enqueued ALTER COLUMN scheduler_job_id TYPE bigint;
|
3
|
+
|
4
|
+
ALTER TABLE que_scheduler_audit_enqueued ADD COLUMN job_id bigint;
|
5
|
+
ALTER TABLE que_scheduler_audit_enqueued ADD COLUMN run_at timestamptz;
|
6
|
+
|
7
|
+
CREATE INDEX que_scheduler_audit_enqueued_job_id ON que_scheduler_audit_enqueued USING btree (job_id);
|
@@ -21,8 +21,10 @@ module Que
|
|
21
21
|
logs = ["que-scheduler last ran at #{scheduler_job_args.last_run_time}."]
|
22
22
|
|
23
23
|
result = EnqueueingCalculator.parse(DefinedJob.defined_jobs, scheduler_job_args)
|
24
|
-
enqueue_required_jobs(result, logs)
|
25
|
-
enqueue_self_again(
|
24
|
+
enqueued_jobs = enqueue_required_jobs(result, logs)
|
25
|
+
enqueue_self_again(
|
26
|
+
scheduler_job_args, scheduler_job_args.as_time, result.job_dictionary, enqueued_jobs
|
27
|
+
)
|
26
28
|
|
27
29
|
# Only now we're sure nothing errored, log the results
|
28
30
|
logs.each { |str| ::Que.log(message: str) }
|
@@ -31,16 +33,19 @@ module Que
|
|
31
33
|
end
|
32
34
|
|
33
35
|
def enqueue_required_jobs(result, logs)
|
34
|
-
result.missed_jobs.
|
36
|
+
result.missed_jobs.map do |to_enqueue|
|
35
37
|
job_class = to_enqueue.job_class
|
36
38
|
args = to_enqueue.args
|
37
39
|
remaining_hash = to_enqueue.except(:job_class, :args)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
enqueued_job =
|
41
|
+
if args.is_a?(Hash)
|
42
|
+
job_class.enqueue(args.merge(remaining_hash))
|
43
|
+
else
|
44
|
+
job_class.enqueue(*args, remaining_hash)
|
45
|
+
end
|
46
|
+
job_id = enqueued_job.attrs.fetch('job_id')
|
47
|
+
logs << "que-scheduler enqueueing #{job_class} #{job_id} with: #{to_enqueue}"
|
48
|
+
enqueued_job
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
@@ -52,14 +57,14 @@ module Que
|
|
52
57
|
raise "Only one #{self.class.name} should be enqueued. #{schedulers} were found."
|
53
58
|
end
|
54
59
|
|
55
|
-
def enqueue_self_again(scheduler_job_args, last_full_execution,
|
60
|
+
def enqueue_self_again(scheduler_job_args, last_full_execution, job_dictionary, enqueued_jobs)
|
56
61
|
next_run_at = scheduler_job_args.as_time.beginning_of_minute + SCHEDULER_FREQUENCY
|
57
62
|
SchedulerJob.enqueue(
|
58
63
|
last_run_time: last_full_execution.iso8601,
|
59
|
-
job_dictionary:
|
64
|
+
job_dictionary: job_dictionary,
|
60
65
|
run_at: next_run_at
|
61
66
|
)
|
62
|
-
Audit.append(attrs[:job_id], scheduler_job_args.as_time,
|
67
|
+
Audit.append(attrs[:job_id], scheduler_job_args.as_time, enqueued_jobs)
|
63
68
|
end
|
64
69
|
end
|
65
70
|
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:
|
4
|
+
version: 3.0.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-05-
|
11
|
+
date: 2018-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -311,6 +311,8 @@ files:
|
|
311
311
|
- lib/que/scheduler/migrations/2/up.sql
|
312
312
|
- lib/que/scheduler/migrations/3/down.sql
|
313
313
|
- lib/que/scheduler/migrations/3/up.sql
|
314
|
+
- lib/que/scheduler/migrations/4/down.sql
|
315
|
+
- lib/que/scheduler/migrations/4/up.sql
|
314
316
|
- lib/que/scheduler/scheduler_job.rb
|
315
317
|
- lib/que/scheduler/scheduler_job_args.rb
|
316
318
|
- lib/que/scheduler/version.rb
|