rocketjob 5.1.1 → 5.3.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 +2 -2
- data/bin/rocketjob +2 -2
- data/bin/rocketjob_batch_perf +1 -1
- data/bin/rocketjob_perf +1 -1
- data/lib/rocket_job/active_worker.rb +1 -0
- data/lib/rocket_job/batch.rb +17 -17
- data/lib/rocket_job/batch/callbacks.rb +1 -2
- data/lib/rocket_job/batch/io.rb +12 -8
- data/lib/rocket_job/batch/logger.rb +2 -2
- data/lib/rocket_job/batch/lower_priority.rb +2 -2
- data/lib/rocket_job/batch/model.rb +23 -23
- data/lib/rocket_job/batch/performance.rb +19 -21
- data/lib/rocket_job/batch/result.rb +1 -1
- data/lib/rocket_job/batch/results.rb +1 -1
- data/lib/rocket_job/batch/state_machine.rb +5 -6
- data/lib/rocket_job/batch/statistics.rb +10 -8
- data/lib/rocket_job/batch/tabular.rb +2 -2
- data/lib/rocket_job/batch/tabular/input.rb +11 -7
- data/lib/rocket_job/batch/tabular/output.rb +1 -1
- data/lib/rocket_job/batch/throttle.rb +12 -31
- data/lib/rocket_job/batch/throttle_running_workers.rb +71 -0
- data/lib/rocket_job/batch/throttle_windows.rb +67 -0
- data/lib/rocket_job/batch/worker.rb +148 -116
- data/lib/rocket_job/cli.rb +57 -54
- data/lib/rocket_job/config.rb +8 -10
- data/lib/rocket_job/dirmon_entry.rb +13 -10
- data/lib/rocket_job/event.rb +16 -16
- data/lib/rocket_job/extensions/mongo/logging.rb +2 -2
- data/lib/rocket_job/extensions/mongoid/clients/options.rb +2 -2
- data/lib/rocket_job/extensions/mongoid/contextual/mongo.rb +4 -2
- data/lib/rocket_job/extensions/mongoid/factory.rb +13 -5
- data/lib/rocket_job/extensions/rocket_job_adapter.rb +2 -1
- data/lib/rocket_job/job_exception.rb +0 -3
- data/lib/rocket_job/jobs/dirmon_job.rb +4 -4
- data/lib/rocket_job/jobs/housekeeping_job.rb +7 -7
- data/lib/rocket_job/jobs/on_demand_batch_job.rb +14 -4
- data/lib/rocket_job/jobs/on_demand_job.rb +3 -3
- data/lib/rocket_job/jobs/performance_job.rb +1 -1
- data/lib/rocket_job/jobs/re_encrypt/relational_job.rb +11 -10
- data/lib/rocket_job/jobs/upload_file_job.rb +9 -5
- data/lib/rocket_job/performance.rb +24 -22
- data/lib/rocket_job/plugins/cron.rb +7 -3
- data/lib/rocket_job/plugins/document.rb +7 -5
- data/lib/rocket_job/plugins/job/callbacks.rb +1 -1
- data/lib/rocket_job/plugins/job/logger.rb +3 -3
- data/lib/rocket_job/plugins/job/model.rb +34 -27
- data/lib/rocket_job/plugins/job/persistence.rb +7 -34
- data/lib/rocket_job/plugins/job/state_machine.rb +5 -4
- data/lib/rocket_job/plugins/job/throttle.rb +13 -29
- data/lib/rocket_job/plugins/job/throttle_running_jobs.rb +3 -3
- data/lib/rocket_job/plugins/job/worker.rb +22 -70
- data/lib/rocket_job/plugins/processing_window.rb +5 -4
- data/lib/rocket_job/plugins/restart.rb +3 -3
- data/lib/rocket_job/plugins/retry.rb +2 -2
- data/lib/rocket_job/plugins/singleton.rb +1 -2
- data/lib/rocket_job/plugins/state_machine.rb +4 -4
- data/lib/rocket_job/plugins/transaction.rb +1 -1
- data/lib/rocket_job/rocket_job.rb +5 -4
- data/lib/rocket_job/server.rb +2 -2
- data/lib/rocket_job/server/model.rb +14 -13
- data/lib/rocket_job/server/state_machine.rb +1 -2
- data/lib/rocket_job/sliced/compressed_slice.rb +4 -4
- data/lib/rocket_job/sliced/encrypted_slice.rb +4 -4
- data/lib/rocket_job/sliced/input.rb +16 -16
- data/lib/rocket_job/sliced/output.rb +2 -2
- data/lib/rocket_job/sliced/slice.rb +43 -22
- data/lib/rocket_job/sliced/slices.rb +14 -11
- data/lib/rocket_job/subscriber.rb +6 -6
- data/lib/rocket_job/subscribers/logger.rb +3 -3
- data/lib/rocket_job/supervisor.rb +12 -12
- data/lib/rocket_job/supervisor/shutdown.rb +7 -7
- data/lib/rocket_job/throttle_definition.rb +37 -0
- data/lib/rocket_job/throttle_definitions.rb +39 -0
- data/lib/rocket_job/version.rb +1 -1
- data/lib/rocket_job/worker.rb +116 -34
- data/lib/rocket_job/worker_pool.rb +6 -6
- data/lib/rocketjob.rb +72 -76
- metadata +17 -18
- data/lib/rocket_job/batch/throttle_running_slices.rb +0 -55
- data/lib/rocket_job/extensions/mongoid_5/clients/options.rb +0 -38
- data/lib/rocket_job/extensions/mongoid_5/contextual/mongo.rb +0 -64
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe39da29017eca601c104ca9d7c4fa90f903c32cbf3822e064cbd4a7f0780272
|
4
|
+
data.tar.gz: ce81cfb0d3a0ac4dbfe4ebe7c549077e56ca52d19ca41a2fda150561ecfeedd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa49046d738a5064da99363e0d854253d17c375ab1e75b095c118139d9081781b9e4177bc03cf70abd4edb906b43cdc033b96234bd5864b5f9959e81f1421074
|
7
|
+
data.tar.gz: 5e67742618a4ec874a1c43649d8619cec007380f8db84a3a81f584ec6f9896be0e14e062e69955158732b32e419a8ac7bfab9eef394c983a9f484a9c5c04c934
|
data/README.md
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
|
4
4
|
Ruby's missing batch system
|
5
5
|
|
6
|
-
Checkout
|
6
|
+
Checkout https://rocketjob.io/
|
7
7
|
|
8
|
-
![Rocket Job](
|
8
|
+
![Rocket Job](https://rocketjob.io/images/rocket/rocket-icon-512x512.png)
|
9
9
|
|
10
10
|
## Documentation
|
11
11
|
|
data/bin/rocketjob
CHANGED
data/bin/rocketjob_batch_perf
CHANGED
data/bin/rocketjob_perf
CHANGED
data/lib/rocket_job/batch.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
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,15 @@ module RocketJob
|
|
18
18
|
include Logger
|
19
19
|
include Worker
|
20
20
|
include Throttle
|
21
|
-
include
|
21
|
+
include ThrottleRunningWorkers
|
22
22
|
include IO
|
23
23
|
|
24
|
-
autoload :LowerPriority,
|
25
|
-
autoload :Performance,
|
26
|
-
autoload :Statistics,
|
27
|
-
autoload :
|
28
|
-
autoload :
|
29
|
-
autoload :
|
24
|
+
autoload :LowerPriority, "rocket_job/batch/lower_priority"
|
25
|
+
autoload :Performance, "rocket_job/batch/performance"
|
26
|
+
autoload :Statistics, "rocket_job/batch/statistics"
|
27
|
+
autoload :ThrottleWindows, "rocket_job/batch/throttle_windows"
|
28
|
+
autoload :Result, "rocket_job/batch/result"
|
29
|
+
autoload :Results, "rocket_job/batch/results"
|
30
|
+
autoload :Tabular, "rocket_job/batch/tabular"
|
30
31
|
end
|
31
32
|
end
|
32
|
-
|
data/lib/rocket_job/batch/io.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "active_support/concern"
|
2
2
|
|
3
3
|
module RocketJob
|
4
4
|
module Batch
|
@@ -14,9 +14,11 @@ 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
|
-
|
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
|
-
(@inputs ||= {})[category] ||= RocketJob::Sliced::Input.new(rocket_job_io_slice_arguments("inputs", category))
|
21
|
+
(@inputs ||= {})[category] ||= RocketJob::Sliced::Input.new(**rocket_job_io_slice_arguments("inputs", category))
|
20
22
|
end
|
21
23
|
|
22
24
|
# Returns [RocketJob::Sliced::Output] output collection for holding output slices
|
@@ -28,9 +30,11 @@ 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
|
-
|
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
|
-
(@outputs ||= {})[category] ||= RocketJob::Sliced::Output.new(rocket_job_io_slice_arguments("outputs", category))
|
37
|
+
(@outputs ||= {})[category] ||= RocketJob::Sliced::Output.new(**rocket_job_io_slice_arguments("outputs", category))
|
34
38
|
end
|
35
39
|
|
36
40
|
# Upload the supplied file, io, IOStreams::Path, or IOStreams::Stream.
|
@@ -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,
|
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,
|
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
|
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
|
-
|
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
|
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,
|
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
|
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,
|
81
|
-
|
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
|
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 =
|
115
|
+
def status(time_zone = "Eastern Time (US & Canada)")
|
114
116
|
h = {}
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
h[
|
120
|
-
h[
|
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? &&
|
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[
|
128
|
+
h["est_remaining_duration"] = RocketJob.seconds_as_duration((((secs / percent) * 100) - secs))
|
128
129
|
end
|
129
130
|
end
|
130
|
-
|
131
|
-
secs
|
132
|
-
h[
|
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[
|
135
|
+
h["output_slices"] = output.count if collect_output? && !completed?
|
135
136
|
h.merge!(super(time_zone))
|
136
|
-
h.delete(
|
137
|
+
h.delete("result")
|
137
138
|
# Worker name should be retrieved from the slices when processing
|
138
|
-
h.delete(
|
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
|
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
|
2
|
-
require
|
3
|
-
require
|
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[
|
12
|
-
@mongo_config =
|
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
|
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
|
37
|
-
|
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",
|
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
|
59
|
-
o.on(
|
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(
|
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(
|
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(
|
66
|
+
o.on("-z", "--compress", "Turn on compression") do
|
69
67
|
self.compress = true
|
70
68
|
end
|
71
|
-
o.on(
|
69
|
+
o.on("-E", "--encrypt", "Turn on encryption") do
|
72
70
|
self.encrypt = true
|
73
71
|
end
|
74
|
-
o.on(
|
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 =
|
79
|
-
parser.on_tail
|
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
|
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: ->
|
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: ->
|
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: ->
|
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
|
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
|