que-scheduler 3.4.0 → 3.4.1

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: 53cadc9fafa321124d4f52caa66503d8590cb1eaa11ee2ac86e0208c5d6a0fef
4
- data.tar.gz: 2a5731c305089b58c3841f51b67c2dc698718e123a9b68395e92e1dfff37a693
3
+ metadata.gz: cf1ee6c62677a8c215d48d990da257e0f4854c8e6e354e1eae3e90fc0685b601
4
+ data.tar.gz: dd948edfb90841bc54fc0bb3fc9e725bf4127f1ca31c53654a209ed6d5332e42
5
5
  SHA512:
6
- metadata.gz: '087a32c4e9245c3bbaa26fb0e891f2b232c2617bad351d354eb502c0edb853a32ec786601a71e796fe5baa1b13f3691f1dc1c17f55d1b1973648101cd60602c7'
7
- data.tar.gz: 1ba223766fa1d52b79b7ebcdcd534da366636cc306f538e6bc067830a2999b57913c1ade0f5a381287883222aedadc4aa380f9fb479223838468f7df3dfa5d73
6
+ metadata.gz: 7ae4812d01e7ea24300afb6b76a5194f3a25a912852723e30cbc8a1405d1822e8fb543dee955049f87e3063a9ae8b322675e6bbb836c0ab9fe0cc46c119b180c
7
+ data.tar.gz: 7246c2709a90c3e2ac7e14a9a8ee2f91792f3cccf0f516ad2dc6f119ddcf025b9eb9324fcf4e3eb6f7b279646066a02693f2f1364773a34c3aed011e041012da
@@ -1,3 +1,3 @@
1
1
  # rubocop:disable Naming/FileName
2
- require 'que/scheduler'
2
+ require "que/scheduler"
3
3
  # rubocop:enable Naming/FileName
@@ -1,8 +1,8 @@
1
- require 'que/scheduler/version'
2
- require 'que/scheduler/version_support'
3
- require 'que/scheduler/config'
4
- require 'que/scheduler/scheduler_job'
5
- require 'que/scheduler/db'
6
- require 'que/scheduler/audit'
7
- require 'que/scheduler/migrations'
8
- require 'que/scheduler/jobs/que_scheduler_audit_clear_down_job'
1
+ require "que/scheduler/version"
2
+ require "que/scheduler/version_support"
3
+ require "que/scheduler/config"
4
+ require "que/scheduler/scheduler_job"
5
+ require "que/scheduler/db"
6
+ require "que/scheduler/audit"
7
+ require "que/scheduler/migrations"
8
+ require "que/scheduler/jobs/que_scheduler_audit_clear_down_job"
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'to_enqueue'
3
+ require_relative "to_enqueue"
4
4
 
5
5
  module Que
6
6
  module Scheduler
7
7
  module Audit
8
- TABLE_NAME = 'que_scheduler_audit'
9
- ENQUEUED_TABLE_NAME = 'que_scheduler_audit_enqueued'
8
+ TABLE_NAME = "que_scheduler_audit"
9
+ ENQUEUED_TABLE_NAME = "que_scheduler_audit_enqueued"
10
10
  INSERT_AUDIT = %{
11
11
  INSERT INTO #{TABLE_NAME} (scheduler_job_id, executed_at)
12
12
  VALUES ($1::bigint, $2::timestamptz)
@@ -1,5 +1,5 @@
1
- require 'que'
2
- require_relative 'version_support'
1
+ require "que"
2
+ require_relative "version_support"
3
3
 
4
4
  module Que
5
5
  module Scheduler
@@ -21,7 +21,7 @@ module Que
21
21
  end
22
22
 
23
23
  Que::Scheduler.configure do |config|
24
- config.schedule_location = ENV.fetch('QUE_SCHEDULER_CONFIG_LOCATION', 'config/que_schedule.yml')
24
+ config.schedule_location = ENV.fetch("QUE_SCHEDULER_CONFIG_LOCATION", "config/que_schedule.yml")
25
25
  config.transaction_adapter = ::Que.method(:transaction)
26
26
  config.que_scheduler_queue = Que::Scheduler::VersionSupport.default_scheduler_queue
27
27
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'config'
3
+ require_relative "config"
4
4
 
5
5
  module Que
6
6
  module Scheduler
7
7
  module Db
8
8
  SCHEDULER_COUNT_SQL =
9
9
  "SELECT COUNT(*) FROM que_jobs WHERE job_class = 'Que::Scheduler::SchedulerJob'"
10
- NOW_SQL = 'SELECT now()'
10
+ NOW_SQL = "SELECT now()"
11
11
 
12
12
  class << self
13
13
  def count_schedulers
@@ -1,5 +1,5 @@
1
- require 'hashie'
2
- require 'fugit'
1
+ require "hashie"
2
+ require "fugit"
3
3
 
4
4
  # This is the definition of one scheduleable job in the que-scheduler config yml file.
5
5
  module Que
@@ -59,10 +59,10 @@ module Que
59
59
  # rubocop:disable Style/GuardClause This reads better as a conditional
60
60
  def validate_fields_types(options)
61
61
  unless queue.nil? || queue.is_a?(String)
62
- err_field(:queue, options, 'queue must be a string')
62
+ err_field(:queue, options, "queue must be a string")
63
63
  end
64
64
  unless priority.nil? || priority.is_a?(Integer)
65
- err_field(:priority, options, 'priority must be an integer')
65
+ err_field(:priority, options, "priority must be an integer")
66
66
  end
67
67
  unless DEFINED_JOB_TYPES.include?(schedule_type)
68
68
  err_field(:schedule_type, options, "Not in #{DEFINED_JOB_TYPES}")
@@ -71,10 +71,10 @@ module Que
71
71
  # rubocop:enable Style/GuardClause
72
72
 
73
73
  def validate_fields_presence(options)
74
- err_field(:name, options, 'name must be present') if name.nil?
75
- err_field(:job_class, options, 'job_class must be present') if job_class.nil?
74
+ err_field(:name, options, "name must be present") if name.nil?
75
+ err_field(:job_class, options, "job_class must be present") if job_class.nil?
76
76
  # An invalid cron is nil
77
- err_field(:cron, options, 'cron must be present') if cron.nil?
77
+ err_field(:cron, options, "cron must be present") if cron.nil?
78
78
  end
79
79
 
80
80
  def validate_job_class_related(options)
@@ -88,7 +88,7 @@ module Que
88
88
  if queue &&
89
89
  Que::Scheduler::ToEnqueue.active_job_sufficient_version? &&
90
90
  job_class < ::ActiveJob::Base &&
91
- Que::Scheduler::ToEnqueue.active_job_version < Gem::Version.create('6.0.3')
91
+ Que::Scheduler::ToEnqueue.active_job_version < Gem::Version.create("6.0.3")
92
92
  puts <<-ERR
93
93
  WARNING from que-scheduler....
94
94
  Between versions 4.2.3 and 6.0.2 (inclusive) Rails did not support setting queue names
@@ -104,7 +104,7 @@ module Que
104
104
  end
105
105
  end
106
106
 
107
- def err_field(field, options, reason = '')
107
+ def err_field(field, options, reason = "")
108
108
  schedule = Que::Scheduler.configuration.schedule_location
109
109
  value = options[field]
110
110
  raise "Invalid #{field} '#{value}' for '#{name}' in que-scheduler schedule #{schedule}.\n" \
@@ -1,4 +1,4 @@
1
- require 'fugit'
1
+ require "fugit"
2
2
 
3
3
  module Que
4
4
  module Scheduler
@@ -1,4 +1,4 @@
1
- require 'que'
1
+ require "que"
2
2
 
3
3
  # This job can optionally be scheduled to clear down the que-scheduler audit log if it
4
4
  # isn't required in the long term.
@@ -21,8 +21,8 @@ module Que
21
21
  end
22
22
  end
23
23
 
24
- DELETE_AUDIT_ENQUEUED_SQL = build_sql('que_scheduler_audit_enqueued').freeze
25
- DELETE_AUDIT_SQL = build_sql('que_scheduler_audit').freeze
24
+ DELETE_AUDIT_ENQUEUED_SQL = build_sql("que_scheduler_audit_enqueued").freeze
25
+ DELETE_AUDIT_SQL = build_sql("que_scheduler_audit").freeze
26
26
 
27
27
  # Very low priority
28
28
  Que::Scheduler::VersionSupport.set_priority(self, 100)
@@ -36,7 +36,7 @@ module Que
36
36
  # This will delete all but `retain_row_count` oldest rows
37
37
  count = Que::Scheduler::VersionSupport.execute(DELETE_AUDIT_SQL, [retain_row_count])
38
38
  log = "#{self.class} cleared down #{count.first.fetch(:count)} rows"
39
- ::Que.log(event: 'que-scheduler'.to_sym, message: log)
39
+ ::Que.log(event: "que-scheduler".to_sym, message: log)
40
40
  end
41
41
  end
42
42
  end
@@ -1,4 +1,4 @@
1
- require_relative 'defined_job'
1
+ require_relative "defined_job"
2
2
 
3
3
  module Que
4
4
  module Scheduler
@@ -30,11 +30,11 @@ module Que
30
30
  # an array with one item which is that value (this includes if it is a hash). It could
31
31
  # also be a single nil value.
32
32
  args_array =
33
- if !defined_job_hash.key?('args')
33
+ if !defined_job_hash.key?("args")
34
34
  # No args were requested
35
35
  []
36
36
  else
37
- args = defined_job_hash['args']
37
+ args = defined_job_hash["args"]
38
38
  if args.is_a?(Array)
39
39
  # An array of args was requested
40
40
  args
@@ -47,12 +47,12 @@ module Que
47
47
 
48
48
  Que::Scheduler::DefinedJob.create(
49
49
  name: name,
50
- job_class: defined_job_hash['class'] || name,
51
- queue: defined_job_hash['queue'],
50
+ job_class: defined_job_hash["class"] || name,
51
+ queue: defined_job_hash["queue"],
52
52
  args_array: args_array,
53
- priority: defined_job_hash['priority'],
54
- cron: defined_job_hash['cron'],
55
- schedule_type: defined_job_hash['schedule_type']&.to_sym
53
+ priority: defined_job_hash["priority"],
54
+ cron: defined_job_hash["cron"],
55
+ schedule_type: defined_job_hash["schedule_type"]&.to_sym
56
56
  )
57
57
  end
58
58
  end
@@ -1,11 +1,11 @@
1
- require 'que'
1
+ require "que"
2
2
 
3
- require_relative 'schedule'
4
- require_relative 'enqueueing_calculator'
5
- require_relative 'scheduler_job_args'
6
- require_relative 'state_checks'
7
- require_relative 'to_enqueue'
8
- require_relative 'version_support'
3
+ require_relative "schedule"
4
+ require_relative "enqueueing_calculator"
5
+ require_relative "scheduler_job_args"
6
+ require_relative "state_checks"
7
+ require_relative "to_enqueue"
8
+ require_relative "version_support"
9
9
 
10
10
  # The main job that runs every minute, determining what needs to be enqueued, enqueues the required
11
11
  # jobs, then re-enqueues itself.
@@ -29,7 +29,7 @@ module Que
29
29
  scheduler_job_args, scheduler_job_args.as_time, result.job_dictionary, enqueued_jobs
30
30
  )
31
31
  # Only now we're sure nothing errored, log the results
32
- logs.each { |str| ::Que.log(event: 'que-scheduler'.to_sym, message: str) }
32
+ logs.each { |str| ::Que.log(event: "que-scheduler".to_sym, message: str) }
33
33
  destroy
34
34
  end
35
35
  end
@@ -51,7 +51,7 @@ module Que
51
51
  else
52
52
  # This can happen if a middleware nixes the enqueue call
53
53
  "que-scheduler called enqueue on #{to_enqueue.job_class} " \
54
- 'but it reported no job was scheduled. Has `enqueue` been overridden?'
54
+ "but it reported no job was scheduled. Has `enqueue` been overridden?"
55
55
  end
56
56
  end
57
57
 
@@ -71,7 +71,7 @@ module Que
71
71
 
72
72
  # rubocop:disable Style/GuardClause This reads better as a conditional
73
73
  unless Que::Scheduler::VersionSupport.job_attributes(enqueued_job).fetch(:job_id)
74
- raise 'SchedulerJob could not self-schedule. Has `.enqueue` been monkey patched?'
74
+ raise "SchedulerJob could not self-schedule. Has `.enqueue` been monkey patched?"
75
75
  end
76
76
  # rubocop:enable Style/GuardClause
77
77
  end
@@ -1,6 +1,6 @@
1
- require 'hashie'
2
- require 'active_support'
3
- require 'active_support/time_with_zone'
1
+ require "hashie"
2
+ require "active_support"
3
+ require "active_support/time_with_zone"
4
4
 
5
5
  # These are the args that are used for this particular run of the scheduler.
6
6
  module Que
@@ -1,6 +1,6 @@
1
- require_relative 'audit'
2
- require_relative 'db'
3
- require_relative 'migrations'
1
+ require_relative "audit"
2
+ require_relative "db"
3
+ require_relative "migrations"
4
4
 
5
5
  module Que
6
6
  module Scheduler
@@ -1,4 +1,4 @@
1
- require 'que'
1
+ require "que"
2
2
 
3
3
  # This module uses polymorphic dispatch to centralise the differences between supporting Que::Job
4
4
  # and other job systems.
@@ -23,13 +23,13 @@ module Que
23
23
  end
24
24
 
25
25
  def active_job_version
26
- Gem.loaded_specs['activejob']&.version
26
+ Gem.loaded_specs["activejob"]&.version
27
27
  end
28
28
 
29
29
  def active_job_sufficient_version?
30
30
  # ActiveJob 4.x does not support job_ids correctly
31
31
  # https://github.com/rails/rails/pull/20056/files
32
- active_job_version && active_job_version > Gem::Version.create('5')
32
+ active_job_version && active_job_version > Gem::Version.create("5")
33
33
  end
34
34
 
35
35
  def active_job_version_supports_queues?
@@ -38,7 +38,7 @@ module Que
38
38
  # and readded in Rails 6.0.3
39
39
  # https://github.com/rails/rails/pull/38635
40
40
  ToEnqueue.active_job_version && ToEnqueue.active_job_version >=
41
- Gem::Version.create('6.0.3')
41
+ Gem::Version.create("6.0.3")
42
42
  end
43
43
 
44
44
  private
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '3.4.0'.freeze
3
+ VERSION = "3.4.1".freeze
4
4
  end
5
5
  end
@@ -1,4 +1,4 @@
1
- require 'que'
1
+ require "que"
2
2
 
3
3
  # The purpose of this module is to centralise the differences when supporting both que 0.x and
4
4
  # 1.x with the same gem.
@@ -15,7 +15,7 @@ module Que
15
15
  # the top of all jobs it enqueues.
16
16
  def set_priority(context, priority)
17
17
  if zero_major?
18
- context.instance_variable_set('@priority', priority)
18
+ context.instance_variable_set("@priority", priority)
19
19
  else
20
20
  context.priority = priority
21
21
  end
@@ -24,7 +24,7 @@ module Que
24
24
  # Ensure the job runs at least once an hour when it is backing off due to errors
25
25
  def apply_retry_semantics(context)
26
26
  if zero_major?
27
- context.instance_variable_set('@retry_interval', RETRY_PROC)
27
+ context.instance_variable_set("@retry_interval", RETRY_PROC)
28
28
  else
29
29
  context.maximum_retry_count = 1 << 128 # Heat death of universe
30
30
  context.retry_interval = RETRY_PROC
@@ -33,9 +33,9 @@ module Que
33
33
 
34
34
  def job_attributes(enqueued_job)
35
35
  if zero_major?
36
- enqueued_job.attrs.transform_keys(&:to_sym)
36
+ enqueued_job.attrs.to_h.transform_keys(&:to_sym)
37
37
  else
38
- enqueued_job.que_attrs.transform_keys(&:to_sym).tap do |hash|
38
+ enqueued_job.que_attrs.to_h.transform_keys(&:to_sym).tap do |hash|
39
39
  hash[:job_id] = hash.delete(:id)
40
40
  end
41
41
  end
@@ -48,7 +48,7 @@ module Que
48
48
  end
49
49
 
50
50
  def default_scheduler_queue
51
- zero_major? ? '' : Que::DEFAULT_QUEUE
51
+ zero_major? ? "" : Que::DEFAULT_QUEUE
52
52
  end
53
53
 
54
54
  def running_synchronously?
@@ -56,18 +56,18 @@ module Que
56
56
  end
57
57
 
58
58
  def running_synchronously_code?
59
- zero_major? ? 'Que.mode == :sync' : 'Que.run_synchronously = true'
59
+ zero_major? ? "Que.mode == :sync" : "Que.run_synchronously = true"
60
60
  end
61
61
 
62
62
  def zero_major?
63
63
  # This is the only way to handle beta releases too
64
- @zero_major ||= Gem.loaded_specs['que'].version.to_s.split('.').first.to_i.zero?
64
+ @zero_major ||= Gem.loaded_specs["que"].version.to_s.split(".").first.to_i.zero?
65
65
  end
66
66
 
67
67
  private
68
68
 
69
69
  def normalise_array_of_hashes(array)
70
- array.map { |row| row.transform_keys(&:to_sym) }
70
+ array.map { |row| row.to_h.transform_keys(&:to_sym) }
71
71
  end
72
72
  end
73
73
  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: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-07 00:00:00.000000000 Z
11
+ date: 2020-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport