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 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