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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ad8aa04c2481731bc0acf499f960623906dd4a659b9ae978503b76f218dbe96
4
- data.tar.gz: 3c4b81ca9205cd455d7c06c7e94cc1f64d31357fd190e39b2b992e762931216a
3
+ metadata.gz: f10811f1ba2ecc81c7d0fea63a94dd31f85e383d819de9bae939b24751817ee8
4
+ data.tar.gz: 7d461f16288e3161845f1c5ea55dbd422ec23fda41ce86394dc0532d2f563ba8
5
5
  SHA512:
6
- metadata.gz: c61e0fbfa37b704fd6d0c9728645411e071809193bd1de196f4b14500171daba6f95b6fe3846816f2e06cdcc2ecf4f9fa4c88fffdc5a01ed05c4f5d6709b8e92
7
- data.tar.gz: df639d756a59c392db7101b58a697939ec4a4e857e41d45fa24491443b82361bcf90625b2f99c059d78f1975113a78e993bdebcf8909039b850f169980713a5a
6
+ metadata.gz: ec49442550c653717fd8a943a8d46b4ada8431c78098841e9e773b214c89097d0e174936396c05c79cc91d42ebb9c5d5bf8b6bf677d05ae07ba049c011d405f3
7
+ data.tar.gz: b32792dd60a8895b84cba9b26a6cc01602eae2eacac097e7c4593db2aa2897a4e21eae9a4d626aef1f1ead58f9f13d01cacd588e962446f5ddbfecf6faf40fa5
data/README.md CHANGED
@@ -27,7 +27,7 @@ files, but with additional features.
27
27
  ```ruby
28
28
  class CreateQueSchedulerSchema < ActiveRecord::Migration
29
29
  def change
30
- Que::Scheduler::Migrations.migrate!(version: 3)
30
+ Que::Scheduler::Migrations.migrate!(version: 4)
31
31
  end
32
32
  end
33
33
  ```
@@ -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::integer, $2::timestamptz)
10
+ VALUES ($1::bigint, $2::timestamptz)
11
11
  RETURNING *
12
12
  }
13
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)
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(job_id, executed_at, result)
21
- ::Que.execute(INSERT_AUDIT, [job_id, executed_at])
22
- result.missed_jobs.each do |j|
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 #{job_id} #{executed_at} #{j}" if inserted.empty?
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(scheduler_job_args, scheduler_job_args.as_time, result)
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.each do |to_enqueue|
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
- if args.is_a?(Hash)
39
- job_class.enqueue(args.merge(remaining_hash))
40
- else
41
- job_class.enqueue(*args, remaining_hash)
42
- end
43
- logs << "que-scheduler enqueueing #{job_class} with: #{to_enqueue}"
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, result)
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: result.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, result)
67
+ Audit.append(attrs[:job_id], scheduler_job_args.as_time, enqueued_jobs)
63
68
  end
64
69
  end
65
70
  end
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '2.1.2'.freeze
3
+ VERSION = '3.0.0'.freeze
4
4
  end
5
5
  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.1.2
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-18 00:00:00.000000000 Z
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