que-scheduler 2.1.2 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|