rocketjob 5.1.1 → 5.2.0.beta1

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rocketjob +2 -2
  3. data/bin/rocketjob_batch_perf +1 -1
  4. data/bin/rocketjob_perf +1 -1
  5. data/lib/rocket_job/active_worker.rb +1 -0
  6. data/lib/rocket_job/batch.rb +16 -17
  7. data/lib/rocket_job/batch/callbacks.rb +1 -2
  8. data/lib/rocket_job/batch/io.rb +10 -6
  9. data/lib/rocket_job/batch/logger.rb +2 -2
  10. data/lib/rocket_job/batch/lower_priority.rb +2 -2
  11. data/lib/rocket_job/batch/model.rb +23 -23
  12. data/lib/rocket_job/batch/performance.rb +19 -21
  13. data/lib/rocket_job/batch/result.rb +1 -1
  14. data/lib/rocket_job/batch/results.rb +1 -1
  15. data/lib/rocket_job/batch/state_machine.rb +5 -6
  16. data/lib/rocket_job/batch/statistics.rb +10 -8
  17. data/lib/rocket_job/batch/tabular.rb +2 -2
  18. data/lib/rocket_job/batch/tabular/input.rb +11 -7
  19. data/lib/rocket_job/batch/tabular/output.rb +1 -1
  20. data/lib/rocket_job/batch/throttle.rb +11 -30
  21. data/lib/rocket_job/batch/{throttle_running_slices.rb → throttle_running_workers.rb} +13 -10
  22. data/lib/rocket_job/batch/worker.rb +102 -85
  23. data/lib/rocket_job/cli.rb +57 -54
  24. data/lib/rocket_job/config.rb +8 -10
  25. data/lib/rocket_job/dirmon_entry.rb +13 -10
  26. data/lib/rocket_job/event.rb +16 -16
  27. data/lib/rocket_job/extensions/mongo/logging.rb +2 -2
  28. data/lib/rocket_job/extensions/mongoid/clients/options.rb +2 -2
  29. data/lib/rocket_job/extensions/mongoid/contextual/mongo.rb +4 -2
  30. data/lib/rocket_job/extensions/mongoid/factory.rb +13 -5
  31. data/lib/rocket_job/extensions/rocket_job_adapter.rb +2 -1
  32. data/lib/rocket_job/job_exception.rb +0 -3
  33. data/lib/rocket_job/jobs/dirmon_job.rb +4 -4
  34. data/lib/rocket_job/jobs/housekeeping_job.rb +7 -7
  35. data/lib/rocket_job/jobs/on_demand_batch_job.rb +14 -4
  36. data/lib/rocket_job/jobs/on_demand_job.rb +3 -3
  37. data/lib/rocket_job/jobs/performance_job.rb +1 -1
  38. data/lib/rocket_job/jobs/re_encrypt/relational_job.rb +11 -10
  39. data/lib/rocket_job/jobs/upload_file_job.rb +9 -5
  40. data/lib/rocket_job/performance.rb +24 -22
  41. data/lib/rocket_job/plugins/cron.rb +7 -3
  42. data/lib/rocket_job/plugins/document.rb +7 -5
  43. data/lib/rocket_job/plugins/job/callbacks.rb +1 -1
  44. data/lib/rocket_job/plugins/job/logger.rb +3 -3
  45. data/lib/rocket_job/plugins/job/model.rb +34 -27
  46. data/lib/rocket_job/plugins/job/persistence.rb +7 -34
  47. data/lib/rocket_job/plugins/job/state_machine.rb +5 -4
  48. data/lib/rocket_job/plugins/job/throttle.rb +12 -28
  49. data/lib/rocket_job/plugins/job/throttle_running_jobs.rb +2 -2
  50. data/lib/rocket_job/plugins/job/worker.rb +22 -70
  51. data/lib/rocket_job/plugins/processing_window.rb +5 -4
  52. data/lib/rocket_job/plugins/restart.rb +3 -3
  53. data/lib/rocket_job/plugins/retry.rb +2 -2
  54. data/lib/rocket_job/plugins/singleton.rb +1 -2
  55. data/lib/rocket_job/plugins/state_machine.rb +4 -4
  56. data/lib/rocket_job/plugins/transaction.rb +1 -1
  57. data/lib/rocket_job/rocket_job.rb +5 -4
  58. data/lib/rocket_job/server.rb +2 -2
  59. data/lib/rocket_job/server/model.rb +14 -13
  60. data/lib/rocket_job/server/state_machine.rb +1 -2
  61. data/lib/rocket_job/sliced/compressed_slice.rb +4 -4
  62. data/lib/rocket_job/sliced/encrypted_slice.rb +4 -4
  63. data/lib/rocket_job/sliced/input.rb +16 -16
  64. data/lib/rocket_job/sliced/output.rb +2 -2
  65. data/lib/rocket_job/sliced/slice.rb +43 -20
  66. data/lib/rocket_job/sliced/slices.rb +14 -11
  67. data/lib/rocket_job/subscriber.rb +6 -6
  68. data/lib/rocket_job/subscribers/logger.rb +3 -3
  69. data/lib/rocket_job/supervisor.rb +12 -12
  70. data/lib/rocket_job/supervisor/shutdown.rb +7 -7
  71. data/lib/rocket_job/throttle_definition.rb +37 -0
  72. data/lib/rocket_job/throttle_definitions.rb +39 -0
  73. data/lib/rocket_job/version.rb +1 -1
  74. data/lib/rocket_job/worker.rb +116 -34
  75. data/lib/rocket_job/worker_pool.rb +6 -6
  76. data/lib/rocketjob.rb +72 -76
  77. metadata +16 -18
  78. data/lib/rocket_job/extensions/mongoid_5/clients/options.rb +0 -38
  79. data/lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb +0 -64
  80. data/lib/rocket_job/extensions/mongoid_5/factory.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1eaf1de774f144f26c22ce60a7a6051f1300a26dba14d76ba93e4eee705a238d
4
- data.tar.gz: 15a2325ebbc517977dfae5ed5695d574ac5941578b4565c9d6e468f84f5523ae
3
+ metadata.gz: 8920ff4a319e838729863bbf2a7a66a4ee003ac9328cc1c3d3942fc59cecab2c
4
+ data.tar.gz: 3c5f4927370915b3188295cd181f5b1dc4ae64a17b0cd070e946cfa82b7517c6
5
5
  SHA512:
6
- metadata.gz: ceb14a804ad87ae2e3b0c94414261efbf68e6db606b0ad1251b07820d715640439cf230f32ab836f2d40049fc74662761d8ca260c2b2435047675d2bd0575198
7
- data.tar.gz: 88f29b1f69867c819f83da5e8e3a633662355f9ee4e6e0c749908b8939db08db7bc1fa4b3751a25294c5bbd75576045a739c0d3ac6416d5143d2d9d1ee081be7
6
+ metadata.gz: 1395412d271a4a1cde3d1f80fa6d45d5a0e948454b34e6a1d1221631b718d1f4fb16e3683a4a57af1e1f64d724219b70ab65cd84f7a2c9658d67e0608d263973
7
+ data.tar.gz: f5b161cf5dcb32126dff42b645b3356707ea74623f011af9a6e7bf0b8fee6403254b302ec5644a85181c207dbe70cfa3a82349be4a2bf52127e68e9f4ebaf5ab
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'semantic_logger'
4
- require 'rocket_job/cli'
3
+ require "semantic_logger"
4
+ require "rocket_job/cli"
5
5
 
6
6
  # Start a rocketjob server instance from the command line
7
7
  # Allow Ruby to catch and display any startup exceptions
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require 'rocketjob_batch'
2
+ require "rocketjob_batch"
3
3
 
4
4
  # Log to console
5
5
  SemanticLogger.add_appender(io: STDOUT, formatter: :color)
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require 'rocketjob'
2
+ require "rocketjob"
3
3
 
4
4
  # Log to console
5
5
  SemanticLogger.add_appender(io: STDOUT, formatter: :color)
@@ -29,6 +29,7 @@ module RocketJob
29
29
  def self.requeue_zombies
30
30
  all.each do |active_worker|
31
31
  next if !active_worker.zombie? || !active_worker.job.may_requeue?(active_worker.server_name)
32
+
32
33
  active_worker.job.requeue!(active_worker.server_name)
33
34
  end
34
35
  end
@@ -1,12 +1,12 @@
1
- require 'active_support/concern'
2
- require 'rocket_job/batch/callbacks'
3
- require 'rocket_job/batch/io'
4
- require 'rocket_job/batch/logger'
5
- require 'rocket_job/batch/model'
6
- require 'rocket_job/batch/state_machine'
7
- require 'rocket_job/batch/throttle'
8
- require 'rocket_job/batch/throttle_running_slices'
9
- require 'rocket_job/batch/worker'
1
+ require "active_support/concern"
2
+ require "rocket_job/batch/callbacks"
3
+ require "rocket_job/batch/io"
4
+ require "rocket_job/batch/logger"
5
+ require "rocket_job/batch/model"
6
+ require "rocket_job/batch/state_machine"
7
+ require "rocket_job/batch/throttle"
8
+ require "rocket_job/batch/throttle_running_workers"
9
+ require "rocket_job/batch/worker"
10
10
 
11
11
  module RocketJob
12
12
  module Batch
@@ -18,15 +18,14 @@ module RocketJob
18
18
  include Logger
19
19
  include Worker
20
20
  include Throttle
21
- include ThrottleRunningSlices
21
+ include ThrottleRunningWorkers
22
22
  include IO
23
23
 
24
- autoload :LowerPriority, 'rocket_job/batch/lower_priority'
25
- autoload :Performance, 'rocket_job/batch/performance'
26
- autoload :Statistics, 'rocket_job/batch/statistics'
27
- autoload :Result, 'rocket_job/batch/result'
28
- autoload :Results, 'rocket_job/batch/results'
29
- autoload :Tabular, 'rocket_job/batch/tabular'
24
+ autoload :LowerPriority, "rocket_job/batch/lower_priority"
25
+ autoload :Performance, "rocket_job/batch/performance"
26
+ autoload :Statistics, "rocket_job/batch/statistics"
27
+ autoload :Result, "rocket_job/batch/result"
28
+ autoload :Results, "rocket_job/batch/results"
29
+ autoload :Tabular, "rocket_job/batch/tabular"
30
30
  end
31
31
  end
32
-
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -34,7 +34,6 @@ module RocketJob
34
34
  set_callback(:after_batch, :after, *filters, &blk)
35
35
  end
36
36
  end
37
-
38
37
  end
39
38
  end
40
39
  end
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -14,7 +14,9 @@ module RocketJob
14
14
  # Default: None ( Uses the single default input collection for this job )
15
15
  # Validates: This value must be one of those listed in #input_categories
16
16
  def input(category = :main)
17
- raise "Category #{category.inspect}, must be registered in input_categories: #{input_categories.inspect}" unless input_categories.include?(category) || (category == :main)
17
+ unless input_categories.include?(category) || (category == :main)
18
+ raise "Category #{category.inspect}, must be registered in input_categories: #{input_categories.inspect}"
19
+ end
18
20
 
19
21
  (@inputs ||= {})[category] ||= RocketJob::Sliced::Input.new(rocket_job_io_slice_arguments("inputs", category))
20
22
  end
@@ -28,7 +30,9 @@ module RocketJob
28
30
  # Default: None ( Uses the single default output collection for this job )
29
31
  # Validates: This value must be one of those listed in #output_categories
30
32
  def output(category = :main)
31
- raise "Category #{category.inspect}, must be registered in output_categories: #{output_categories.inspect}" unless output_categories.include?(category) || (category == :main)
33
+ unless output_categories.include?(category) || (category == :main)
34
+ raise "Category #{category.inspect}, must be registered in output_categories: #{output_categories.inspect}"
35
+ end
32
36
 
33
37
  (@outputs ||= {})[category] ||= RocketJob::Sliced::Output.new(rocket_job_io_slice_arguments("outputs", category))
34
38
  end
@@ -110,7 +114,7 @@ module RocketJob
110
114
  # * Only use this method for UTF-8 data, for binary data use #input_slice or #input_records.
111
115
  # * CSV parsing is slow, so it is usually left for the workers to do.
112
116
  def upload(stream = nil, file_name: nil, category: :main, stream_mode: :line, on_first: nil, **args, &block)
113
- raise(ArgumentError, 'Either stream, or a block must be supplied') unless stream || block
117
+ raise(ArgumentError, "Either stream, or a block must be supplied") unless stream || block
114
118
 
115
119
  stream_mode = stream_mode.to_sym
116
120
  # Backward compatibility with existing v4 jobs
@@ -384,7 +388,8 @@ module RocketJob
384
388
  if block
385
389
  RocketJob::Sliced::Writer::Output.collect(self, input_slice, &block)
386
390
  else
387
- raise(ArgumentError, 'result parameter is required when no block is supplied') unless result
391
+ raise(ArgumentError, "result parameter is required when no block is supplied") unless result
392
+
388
393
  RocketJob::Sliced::Writer::Output.collect(self, input_slice) { |writer| writer << result }
389
394
  end
390
395
  end
@@ -403,7 +408,6 @@ module RocketJob
403
408
  end
404
409
  args
405
410
  end
406
-
407
411
  end
408
412
  end
409
413
  end
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -31,7 +31,7 @@ module RocketJob
31
31
  # - silence noisy jobs by raising log level
32
32
  def rocket_job_batch_slice_logger(&block)
33
33
  logger.measure_info(
34
- 'Completed slice',
34
+ "Completed slice",
35
35
  metric: "#{self.class.name}/slice",
36
36
  log_exception: :full,
37
37
  on_exception_level: :error,
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
  module RocketJob
3
3
  module Batch
4
4
  # Automatically lower the priority for Jobs with a higher record_count.
@@ -33,7 +33,7 @@ module RocketJob
33
33
 
34
34
  included do
35
35
  unless public_method_defined?(:record_count=)
36
- raise(ArgumentError, 'LowerPriority can only be used in conjunction with RocketJob::Plugins::Batch')
36
+ raise(ArgumentError, "LowerPriority can only be used in conjunction with RocketJob::Plugins::Batch")
37
37
  end
38
38
 
39
39
  # For each of this many records lower the priority by 1.
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
  module RocketJob
3
3
  module Batch
4
4
  # Model attributes
@@ -77,8 +77,10 @@ module RocketJob
77
77
  # Under some circumstances ActiveModel is passing in a nil value even though the
78
78
  # attributes have default values
79
79
  Array(value).each do |category|
80
- record.errors.add(attr, 'must only contain Symbol values') unless category.kind_of?(Symbol)
81
- record.errors.add(attr, 'must only consist of lowercase characters, digits, and _') unless category.to_s =~ /\A[a-z_0-9]+\Z/
80
+ record.errors.add(attr, "must only contain Symbol values") unless category.is_a?(Symbol)
81
+ unless category.to_s =~ /\A[a-z_0-9]+\Z/
82
+ record.errors.add(attr, "must only consist of lowercase characters, digits, and _")
83
+ end
82
84
  end
83
85
  end
84
86
  end
@@ -97,7 +99,7 @@ module RocketJob
97
99
  # Returns 0 if the total record count has not yet been set
98
100
  def percent_complete
99
101
  return 100 if completed?
100
- return 0 unless record_count.to_i > 0
102
+ return 0 unless record_count.to_i.positive?
101
103
 
102
104
  # Approximate number of input records
103
105
  input_records = input.count.to_f * slice_size
@@ -110,32 +112,31 @@ module RocketJob
110
112
  end
111
113
 
112
114
  # Returns [Hash] status of this job
113
- def status(time_zone = 'Eastern Time (US & Canada)')
115
+ def status(time_zone = "Eastern Time (US & Canada)")
114
116
  h = {}
115
- case
116
- when queued?
117
- h['queued_slices'] = input.queued.count
118
- when running? || paused? || failed?
119
- h['active_slices'] = worker_count
120
- h['failed_slices'] = input.failed.count
121
- h['queued_slices'] = input.queued.count
117
+ if queued?
118
+ h["queued_slices"] = input.queued.count
119
+ elsif running? || paused? || failed?
120
+ h["active_slices"] = worker_count
121
+ h["failed_slices"] = input.failed.count
122
+ h["queued_slices"] = input.queued.count
122
123
  # Very high level estimated time left
123
- if record_count && running? && (record_count > 0)
124
+ if record_count && running? && record_count.positive?
124
125
  percent = percent_complete
125
126
  if percent >= 5
126
127
  secs = seconds.to_f
127
- h['est_remaining_duration'] = RocketJob.seconds_as_duration((((secs / percent) * 100) - secs))
128
+ h["est_remaining_duration"] = RocketJob.seconds_as_duration((((secs / percent) * 100) - secs))
128
129
  end
129
130
  end
130
- when completed?
131
- secs = seconds.to_f
132
- h['records_per_hour'] = ((record_count.to_f / secs) * 60 * 60).round if record_count && (record_count > 0) && (secs > 0.0)
131
+ elsif completed?
132
+ secs = seconds.to_f
133
+ h["records_per_hour"] = ((record_count.to_f / secs) * 60 * 60).round if record_count&.positive? && (secs > 0.0)
133
134
  end
134
- h['output_slices'] = output.count if collect_output? && !completed?
135
+ h["output_slices"] = output.count if collect_output? && !completed?
135
136
  h.merge!(super(time_zone))
136
- h.delete('result')
137
+ h.delete("result")
137
138
  # Worker name should be retrieved from the slices when processing
138
- h.delete('worker_name') if sub_state == :processing
139
+ h.delete("worker_name") if sub_state == :processing
139
140
  h
140
141
  end
141
142
 
@@ -145,9 +146,9 @@ module RocketJob
145
146
 
146
147
  case sub_state
147
148
  when :before, :after
148
- worker_name
149
+ [worker_name]
149
150
  when :processing
150
- input.running.collect { |slice| slice.worker_name }
151
+ input.running.collect(&:worker_name)
151
152
  else
152
153
  []
153
154
  end
@@ -171,7 +172,6 @@ module RocketJob
171
172
  @worker_count_last = Time.now.to_i
172
173
  @worker_count
173
174
  end
174
-
175
175
  end
176
176
  end
177
177
  end
@@ -1,6 +1,6 @@
1
- require 'optparse'
2
- require 'csv'
3
- require 'yaml'
1
+ require "optparse"
2
+ require "csv"
3
+ require "yaml"
4
4
  module RocketJob
5
5
  module Batch
6
6
  class Performance
@@ -8,8 +8,8 @@ module RocketJob
8
8
 
9
9
  def initialize
10
10
  @count = 10_000_000
11
- @environment = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
12
- @mongo_config = 'config/mongoid.yml'
11
+ @environment = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
12
+ @mongo_config = "config/mongoid.yml"
13
13
  @compress = false
14
14
  @encrypt = false
15
15
  @slice_size = 1000
@@ -17,7 +17,7 @@ module RocketJob
17
17
 
18
18
  def run_test_case(count = self.count)
19
19
  servers = RocketJob::Server.count
20
- raise 'Please start workers before starting the performance test' if servers == 0
20
+ raise "Please start workers before starting the performance test" if servers.zero?
21
21
 
22
22
  count_running_workers
23
23
 
@@ -33,10 +33,8 @@ module RocketJob
33
33
  end
34
34
  job.save!
35
35
 
36
- puts 'Waiting for job to complete'
37
- while (!job.reload.completed?)
38
- sleep 3
39
- end
36
+ puts "Waiting for job to complete"
37
+ sleep 3 until job.reload.completed?
40
38
 
41
39
  duration = job.completed_at - job.started_at
42
40
  {count: count, duration: duration, records_per_second: (count.to_f / duration).round(3), workers: workers, servers: servers, compress: compress, encrypt: encrypt}
@@ -47,7 +45,7 @@ module RocketJob
47
45
  ruby = defined?(JRuby) ? "jruby_#{JRUBY_VERSION}" : "ruby_#{RUBY_VERSION}"
48
46
  version = RocketJob::VERSION
49
47
 
50
- CSV.open("job_results_#{ruby}_v#{version}.csv", 'wb') do |csv|
48
+ CSV.open("job_results_#{ruby}_v#{version}.csv", "wb") do |csv|
51
49
  csv << results.first.keys
52
50
  results.each { |result| csv << result.values }
53
51
  end
@@ -55,28 +53,28 @@ module RocketJob
55
53
 
56
54
  # Parse command line options
57
55
  def parse(argv)
58
- parser = OptionParser.new do |o|
59
- o.on('-c', '--count COUNT', 'Count of records to enqueue') do |arg|
56
+ parser = OptionParser.new do |o|
57
+ o.on("-c", "--count COUNT", "Count of records to enqueue") do |arg|
60
58
  self.count = arg.to_i
61
59
  end
62
- o.on('-m', '--mongo MONGO_CONFIG_FILE_NAME', 'Location of mongoid.yml config file') do |arg|
60
+ o.on("-m", "--mongo MONGO_CONFIG_FILE_NAME", "Location of mongoid.yml config file") do |arg|
63
61
  self.mongo_config = arg
64
62
  end
65
- o.on('-e', '--environment ENVIRONMENT', 'The environment to run the app on (Default: RAILS_ENV || RACK_ENV || development)') do |arg|
63
+ o.on("-e", "--environment ENVIRONMENT", "The environment to run the app on (Default: RAILS_ENV || RACK_ENV || development)") do |arg|
66
64
  self.environment = arg
67
65
  end
68
- o.on('-z', '--compress', 'Turn on compression') do |arg|
66
+ o.on("-z", "--compress", "Turn on compression") do
69
67
  self.compress = true
70
68
  end
71
- o.on('-E', '--encrypt', 'Turn on encryption') do |arg|
69
+ o.on("-E", "--encrypt", "Turn on encryption") do
72
70
  self.encrypt = true
73
71
  end
74
- o.on('-s', '--slice_size COUNT', 'Slice size') do |arg|
72
+ o.on("-s", "--slice_size COUNT", "Slice size") do
75
73
  self.slice_size = arg.to_i
76
74
  end
77
75
  end
78
- parser.banner = 'rocketjob_batch_perf <options>'
79
- parser.on_tail '-h', '--help', 'Show help' do
76
+ parser.banner = "rocketjob_batch_perf <options>"
77
+ parser.on_tail "-h", "--help", "Show help" do
80
78
  puts parser
81
79
  exit 1
82
80
  end
@@ -88,12 +86,12 @@ module RocketJob
88
86
  self.workers = 0
89
87
  RocketJob::Server.running.each do |server|
90
88
  next if server.zombie?
89
+
91
90
  self.servers += 1
92
91
  self.workers += server.heartbeat.workers
93
92
  end
94
93
  puts "Running: #{workers} workers, distributed across #{servers} servers"
95
94
  end
96
-
97
95
  end
98
96
  end
99
97
  end
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -23,15 +23,15 @@ module RocketJob
23
23
  aasm.state_machine.add_event(:requeue, {}) do
24
24
  # Requeue perform
25
25
  transitions from: :running, to: :running,
26
- if: -> server_name { sub_state == :processing },
26
+ if: ->(_server_name) { sub_state == :processing },
27
27
  after: :rocket_job_requeue_sub_state_processing
28
28
  # Requeue after_batch
29
29
  transitions from: :running, to: :running,
30
- if: -> server_name { worker_on_server?(server_name) && (sub_state == :after) },
30
+ if: ->(server_name) { worker_on_server?(server_name) && (sub_state == :after) },
31
31
  after: :rocket_job_requeue_sub_state_after
32
32
  # Requeue before_batch
33
33
  transitions from: :running, to: :queued,
34
- if: -> server_name { worker_on_server?(server_name) && (sub_state == :before) },
34
+ if: ->(server_name) { worker_on_server?(server_name) && (sub_state == :before) },
35
35
  after: :rocket_job_requeue_sub_state_before
36
36
  end
37
37
 
@@ -68,7 +68,7 @@ module RocketJob
68
68
  end
69
69
 
70
70
  def rocket_job_sub_state_before
71
- self.sub_state = :before unless self.sub_state
71
+ self.sub_state = :before unless sub_state
72
72
  end
73
73
 
74
74
  def rocket_job_clear_sub_state
@@ -96,7 +96,6 @@ module RocketJob
96
96
  def rocket_job_requeue_failed_slices
97
97
  input.requeue_failed
98
98
  end
99
-
100
99
  end
101
100
  end
102
101
  end
@@ -1,4 +1,4 @@
1
- require 'active_support/concern'
1
+ require "active_support/concern"
2
2
 
3
3
  module RocketJob
4
4
  module Batch
@@ -22,11 +22,12 @@ module RocketJob
22
22
  end
23
23
 
24
24
  def inc_key(key, increment = 1)
25
- return if increment == 0
25
+ return if increment.zero?
26
+
26
27
  if in_memory
27
28
  # For tests and in-process execution
28
29
  inc_in_memory(key, increment)
29
- elsif key && key != ''
30
+ elsif key && key != ""
30
31
  stats["statistics.#{key}"] += increment
31
32
  end
32
33
  self
@@ -40,11 +41,11 @@ module RocketJob
40
41
 
41
42
  # Navigates path and creates child hashes as needed at the end is reached
42
43
  def inc_in_memory(key, increment)
43
- paths = key.to_s.split('.')
44
+ paths = key.to_s.split(".")
44
45
  last = paths.pop
45
46
  return unless last
46
47
 
47
- target = paths.inject(in_memory) { |target, key| target.key?(key) ? target[key] : target[key] = Hash.new(0) }
48
+ target = paths.inject(in_memory) { |target, key| target.key?(key) ? target[key] : target[key] = Hash.new(0) }
48
49
  target[last] += increment
49
50
  end
50
51
  end
@@ -57,7 +58,8 @@ module RocketJob
57
58
 
58
59
  # Increment a statistic
59
60
  def statistics_inc(key, increment = 1)
60
- return if key.nil? || key == ''
61
+ return if key.nil? || key == ""
62
+
61
63
  # Being called within tests outside of a perform
62
64
  @slice_statistics ||= Stats.new(new_record? ? statistics : nil)
63
65
  key.is_a?(Hash) ? @slice_statistics.inc(key) : @slice_statistics.inc_key(key, increment)
@@ -70,12 +72,12 @@ module RocketJob
70
72
  def statistics_capture
71
73
  @slice_statistics = Stats.new(new_record? ? statistics : nil)
72
74
  yield
73
- collection.update_one({_id: id}, {'$inc' => @slice_statistics.stats}) unless @slice_statistics.empty?
75
+ collection.update_one({_id: id}, {"$inc" => @slice_statistics.stats}) unless @slice_statistics.empty?
74
76
  end
75
77
 
76
78
  # Overrides RocketJob::Batch::Logger#rocket_job_batch_log_payload
77
79
  def rocket_job_batch_log_payload
78
- h = {
80
+ h = {
79
81
  from: aasm.from_state,
80
82
  to: aasm.to_state,
81
83
  event: aasm.current_event