rocketjob 5.4.0.beta1 → 6.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +19 -5
- data/bin/rocketjob_batch_perf +1 -1
- data/bin/rocketjob_perf +1 -1
- data/lib/rocket_job/batch.rb +3 -0
- data/lib/rocket_job/batch/categories.rb +341 -0
- data/lib/rocket_job/batch/io.rb +128 -60
- data/lib/rocket_job/batch/model.rb +20 -68
- data/lib/rocket_job/batch/performance.rb +19 -7
- data/lib/rocket_job/batch/statistics.rb +34 -12
- data/lib/rocket_job/batch/tabular.rb +2 -0
- data/lib/rocket_job/batch/tabular/input.rb +8 -6
- data/lib/rocket_job/batch/tabular/output.rb +4 -2
- data/lib/rocket_job/batch/throttle_running_workers.rb +8 -17
- data/lib/rocket_job/batch/worker.rb +27 -24
- data/lib/rocket_job/category/base.rb +78 -0
- data/lib/rocket_job/category/input.rb +110 -0
- data/lib/rocket_job/category/output.rb +25 -0
- data/lib/rocket_job/cli.rb +25 -17
- data/lib/rocket_job/dirmon_entry.rb +22 -12
- data/lib/rocket_job/event.rb +1 -1
- data/lib/rocket_job/extensions/iostreams/path.rb +32 -0
- data/lib/rocket_job/extensions/mongoid/contextual/mongo.rb +2 -2
- data/lib/rocket_job/extensions/mongoid/factory.rb +4 -12
- data/lib/rocket_job/extensions/mongoid/stringified_symbol.rb +50 -0
- data/lib/rocket_job/extensions/psych/yaml_tree.rb +8 -0
- data/lib/rocket_job/extensions/rocket_job_adapter.rb +2 -2
- data/lib/rocket_job/jobs/dirmon_job.rb +2 -2
- data/lib/rocket_job/jobs/housekeeping_job.rb +7 -7
- data/lib/rocket_job/jobs/on_demand_batch_job.rb +15 -6
- data/lib/rocket_job/jobs/on_demand_job.rb +1 -2
- data/lib/rocket_job/jobs/performance_job.rb +3 -1
- data/lib/rocket_job/jobs/re_encrypt/relational_job.rb +103 -96
- data/lib/rocket_job/jobs/upload_file_job.rb +44 -8
- data/lib/rocket_job/lookup_collection.rb +69 -0
- data/lib/rocket_job/plugins/job/model.rb +25 -50
- data/lib/rocket_job/plugins/job/throttle.rb +2 -2
- data/lib/rocket_job/plugins/job/throttle_running_jobs.rb +12 -4
- data/lib/rocket_job/plugins/job/worker.rb +2 -7
- data/lib/rocket_job/plugins/restart.rb +12 -5
- data/lib/rocket_job/plugins/state_machine.rb +2 -1
- data/lib/rocket_job/plugins/throttle_dependent_jobs.rb +38 -0
- data/lib/rocket_job/ractor_worker.rb +42 -0
- data/lib/rocket_job/server/model.rb +1 -1
- data/lib/rocket_job/sliced.rb +15 -70
- data/lib/rocket_job/sliced/bzip2_output_slice.rb +2 -2
- data/lib/rocket_job/sliced/input.rb +1 -1
- data/lib/rocket_job/sliced/slice.rb +5 -13
- data/lib/rocket_job/sliced/slices.rb +14 -2
- data/lib/rocket_job/sliced/writer/output.rb +33 -45
- data/lib/rocket_job/subscribers/server.rb +1 -1
- data/lib/rocket_job/thread_worker.rb +46 -0
- data/lib/rocket_job/throttle_definitions.rb +7 -1
- data/lib/rocket_job/version.rb +1 -1
- data/lib/rocket_job/worker.rb +21 -55
- data/lib/rocket_job/worker_pool.rb +5 -7
- data/lib/rocketjob.rb +53 -43
- metadata +35 -26
- data/lib/rocket_job/extensions/mongoid/remove_warnings.rb +0 -12
- data/lib/rocket_job/jobs/on_demand_batch_tabular_job.rb +0 -28
@@ -33,8 +33,8 @@ module RocketJob
|
|
33
33
|
def serialize_records
|
34
34
|
return [] if @records.nil? || @records.empty?
|
35
35
|
|
36
|
-
lines = records.to_a.join("\n")
|
37
|
-
s
|
36
|
+
lines = records.to_a.join("\n") + "\n"
|
37
|
+
s = StringIO.new
|
38
38
|
IOStreams::Bzip2::Writer.stream(s) { |io| io.write(lines) }
|
39
39
|
BSON::Binary.new(s.string)
|
40
40
|
end
|
@@ -139,7 +139,7 @@ module RocketJob
|
|
139
139
|
document = all.queued.
|
140
140
|
sort("_id" => 1).
|
141
141
|
find_one_and_update(
|
142
|
-
{"$set" => {worker_name: worker_name, state:
|
142
|
+
{"$set" => {worker_name: worker_name, state: "running", started_at: Time.now}},
|
143
143
|
return_document: :after
|
144
144
|
)
|
145
145
|
document.collection_name = collection_name if document
|
@@ -33,7 +33,7 @@ module RocketJob
|
|
33
33
|
#
|
34
34
|
|
35
35
|
# Current state, as set by AASM
|
36
|
-
field :state, type:
|
36
|
+
field :state, type: Mongoid::StringifiedSymbol, default: :queued
|
37
37
|
|
38
38
|
# When processing started on this slice
|
39
39
|
field :started_at, type: Time
|
@@ -139,18 +139,10 @@ module RocketJob
|
|
139
139
|
|
140
140
|
# Returns [Hash] the slice as a Hash for storage purposes
|
141
141
|
# Compresses / Encrypts the slice according to the job setting
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
attrs
|
147
|
-
end
|
148
|
-
else
|
149
|
-
def as_document
|
150
|
-
attrs = super
|
151
|
-
attrs["records"] = serialize_records if @records
|
152
|
-
attrs
|
153
|
-
end
|
142
|
+
def as_attributes
|
143
|
+
attrs = super
|
144
|
+
attrs["records"] = serialize_records if @records
|
145
|
+
attrs
|
154
146
|
end
|
155
147
|
|
156
148
|
def inspect
|
@@ -50,8 +50,8 @@ module RocketJob
|
|
50
50
|
|
51
51
|
# Returns output slices in the order of their id
|
52
52
|
# which is usually the order in which they were written.
|
53
|
-
def each
|
54
|
-
all.sort(id: 1).each
|
53
|
+
def each(&block)
|
54
|
+
all.sort(id: 1).each(&block)
|
55
55
|
end
|
56
56
|
|
57
57
|
# Insert a new slice into the collection
|
@@ -96,6 +96,17 @@ module RocketJob
|
|
96
96
|
slice
|
97
97
|
end
|
98
98
|
|
99
|
+
# Append to an existing slice if already present
|
100
|
+
def append(slice, input_slice)
|
101
|
+
existing_slice = all.where(id: input_slice.id).first
|
102
|
+
return insert(slice, input_slice) unless existing_slice
|
103
|
+
|
104
|
+
extra_records = slice.is_a?(Slice) ? slice.records : slice
|
105
|
+
existing_slice.records = existing_slice.records + extra_records
|
106
|
+
existing_slice.save!
|
107
|
+
existing_slice
|
108
|
+
end
|
109
|
+
|
99
110
|
alias << insert
|
100
111
|
|
101
112
|
# Index for find_and_modify only if it is not already present
|
@@ -139,6 +150,7 @@ module RocketJob
|
|
139
150
|
def last
|
140
151
|
all.sort("_id" => -1).first
|
141
152
|
end
|
153
|
+
|
142
154
|
# rubocop:enable Style/RedundantSort
|
143
155
|
|
144
156
|
# Returns [Array<Struct>] grouped exceptions by class name,
|
@@ -1,30 +1,37 @@
|
|
1
1
|
module RocketJob
|
2
2
|
module Sliced
|
3
3
|
module Writer
|
4
|
-
|
5
|
-
class Output
|
4
|
+
class Null
|
6
5
|
attr_reader :job, :categorized_records
|
7
|
-
attr_accessor :input_slice
|
8
|
-
|
9
|
-
# Collect output results and write to output collections
|
10
|
-
# iff job is collecting output
|
11
|
-
# Notes:
|
12
|
-
# Nothing is saved if an exception is raised inside the block
|
13
|
-
def self.collect(job, input_slice = nil)
|
14
|
-
if job.collect_output?
|
15
|
-
writer = new(job, input_slice)
|
16
|
-
yield(writer)
|
17
|
-
writer.close
|
18
|
-
else
|
19
|
-
writer = NullWriter.new(job, input_slice)
|
20
|
-
yield(writer)
|
21
|
-
end
|
22
|
-
end
|
6
|
+
attr_accessor :input_slice, :append
|
23
7
|
|
24
|
-
def initialize(job, input_slice
|
8
|
+
def initialize(job, input_slice: nil, append: false)
|
25
9
|
@job = job
|
26
10
|
@input_slice = input_slice
|
27
11
|
@categorized_records = {}
|
12
|
+
@append = append
|
13
|
+
end
|
14
|
+
|
15
|
+
def <<(_)
|
16
|
+
# noop
|
17
|
+
end
|
18
|
+
|
19
|
+
def close
|
20
|
+
# noop
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Internal class for writing categorized results into output slices
|
25
|
+
class Output < Null
|
26
|
+
# Collect output results and write to output collections
|
27
|
+
# iff job is collecting output
|
28
|
+
# Notes:
|
29
|
+
# Partial slices are saved when an exception is raised inside the block
|
30
|
+
def self.collect(job, **args)
|
31
|
+
writer = job.output_categories.present? ? new(job, **args) : Null.new(job, **args)
|
32
|
+
yield(writer)
|
33
|
+
ensure
|
34
|
+
writer&.close
|
28
35
|
end
|
29
36
|
|
30
37
|
# Writes the supplied result, RocketJob::Batch::Result or RocketJob::Batch::Results
|
@@ -40,7 +47,8 @@ module RocketJob
|
|
40
47
|
# Write categorized results to their relevant collections
|
41
48
|
def close
|
42
49
|
categorized_records.each_pair do |category, results|
|
43
|
-
job.output(category)
|
50
|
+
collection = job.output(category)
|
51
|
+
append ? collection.append(results, input_slice) : collection.insert(results, input_slice)
|
44
52
|
end
|
45
53
|
end
|
46
54
|
|
@@ -48,33 +56,13 @@ module RocketJob
|
|
48
56
|
|
49
57
|
# Stores the categorized result from one result
|
50
58
|
def extract_categorized_result(result)
|
51
|
-
|
52
|
-
value
|
59
|
+
named_category = :main
|
60
|
+
value = result
|
53
61
|
if result.is_a?(RocketJob::Batch::Result)
|
54
|
-
|
55
|
-
value
|
56
|
-
raise(ArgumentError, "Invalid RocketJob Output Category: #{category}") if job.output_categories.exclude?(category)
|
62
|
+
named_category = result.category
|
63
|
+
value = result.value
|
57
64
|
end
|
58
|
-
(categorized_records[
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
class NullWriter
|
63
|
-
attr_reader :job, :categorized_records
|
64
|
-
attr_accessor :input_slice
|
65
|
-
|
66
|
-
def initialize(job, input_slice = nil)
|
67
|
-
@job = job
|
68
|
-
@input_slice = input_slice
|
69
|
-
@categorized_records = {}
|
70
|
-
end
|
71
|
-
|
72
|
-
def <<(_)
|
73
|
-
# noop
|
74
|
-
end
|
75
|
-
|
76
|
-
def close
|
77
|
-
# noop
|
65
|
+
(categorized_records[named_category] ||= []) << value unless value.nil? && !job.output_category(named_category).nils
|
78
66
|
end
|
79
67
|
end
|
80
68
|
end
|
@@ -17,7 +17,7 @@ module RocketJob
|
|
17
17
|
|
18
18
|
supervisor.logger.info("Stopping Pool")
|
19
19
|
supervisor.worker_pool.stop
|
20
|
-
unless supervisor.worker_pool.living_count
|
20
|
+
unless supervisor.worker_pool.living_count.zero?
|
21
21
|
supervisor.logger.info("Giving pool #{wait_timeout} seconds to terminate")
|
22
22
|
sleep(wait_timeout)
|
23
23
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "concurrent"
|
2
|
+
module RocketJob
|
3
|
+
# ThreadWorker
|
4
|
+
#
|
5
|
+
# A worker runs on a single operating system thread.
|
6
|
+
# Is usually started under a Rocket Job server process.
|
7
|
+
class ThreadWorker < Worker
|
8
|
+
attr_reader :thread
|
9
|
+
|
10
|
+
def initialize(id:, server_name:)
|
11
|
+
super(id: id, server_name: server_name)
|
12
|
+
@shutdown = Concurrent::Event.new
|
13
|
+
@thread = Thread.new { run }
|
14
|
+
end
|
15
|
+
|
16
|
+
def alive?
|
17
|
+
@thread.alive?
|
18
|
+
end
|
19
|
+
|
20
|
+
def backtrace
|
21
|
+
@thread.backtrace
|
22
|
+
end
|
23
|
+
|
24
|
+
def join(*args)
|
25
|
+
@thread.join(*args)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Send each active worker the RocketJob::ShutdownException so that stops processing immediately.
|
29
|
+
def kill
|
30
|
+
@thread.raise(Shutdown, "Shutdown due to kill request for worker: #{name}") if @thread.alive?
|
31
|
+
end
|
32
|
+
|
33
|
+
def shutdown?
|
34
|
+
@shutdown.set?
|
35
|
+
end
|
36
|
+
|
37
|
+
def shutdown!
|
38
|
+
@shutdown.set
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns [true|false] whether the shutdown indicator was set
|
42
|
+
def wait_for_shutdown?(timeout = nil)
|
43
|
+
@shutdown.wait(timeout)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module RocketJob
|
2
2
|
class ThrottleDefinitions
|
3
|
-
|
3
|
+
attr_accessor :throttles
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@throttles = []
|
@@ -35,5 +35,11 @@ module RocketJob
|
|
35
35
|
end
|
36
36
|
nil
|
37
37
|
end
|
38
|
+
|
39
|
+
def deep_dup
|
40
|
+
new_defination = dup
|
41
|
+
new_defination.throttles = throttles.map(&:dup)
|
42
|
+
new_defination
|
43
|
+
end
|
38
44
|
end
|
39
45
|
end
|
data/lib/rocket_job/version.rb
CHANGED
data/lib/rocket_job/worker.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require "concurrent"
|
2
|
-
require "forwardable"
|
3
1
|
module RocketJob
|
4
2
|
# Worker
|
5
3
|
#
|
@@ -7,12 +5,9 @@ module RocketJob
|
|
7
5
|
# Is usually started under a Rocket Job server process.
|
8
6
|
class Worker
|
9
7
|
include SemanticLogger::Loggable
|
10
|
-
include ActiveSupport::Callbacks
|
11
|
-
|
12
|
-
define_callbacks :running
|
13
8
|
|
14
9
|
attr_accessor :id, :current_filter
|
15
|
-
attr_reader :
|
10
|
+
attr_reader :name, :server_name
|
16
11
|
|
17
12
|
# Raised when a worker is killed so that it shutdown immediately, yet cleanly.
|
18
13
|
#
|
@@ -21,59 +16,41 @@ module RocketJob
|
|
21
16
|
class Shutdown < RuntimeError
|
22
17
|
end
|
23
18
|
|
24
|
-
def
|
25
|
-
set_callback(:running, :before, *filters, &blk)
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.after_running(*filters, &blk)
|
29
|
-
set_callback(:running, :after, *filters, &blk)
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.around_running(*filters, &blk)
|
33
|
-
set_callback(:running, :around, *filters, &blk)
|
34
|
-
end
|
35
|
-
|
36
|
-
def initialize(id: 0, server_name: "inline:0", inline: false)
|
19
|
+
def initialize(id: 0, server_name: "inline:0")
|
37
20
|
@id = id
|
38
21
|
@server_name = server_name
|
39
|
-
@shutdown = Concurrent::Event.new
|
40
22
|
@name = "#{server_name}:#{id}"
|
41
23
|
@re_check_start = Time.now
|
42
24
|
@current_filter = Config.filter || {}
|
43
|
-
@thread = Thread.new { run } unless inline
|
44
|
-
@inline = inline
|
45
25
|
end
|
46
26
|
|
47
27
|
def alive?
|
48
|
-
|
28
|
+
true
|
49
29
|
end
|
50
30
|
|
51
31
|
def backtrace
|
52
|
-
|
32
|
+
Thread.current.backtrace
|
53
33
|
end
|
54
34
|
|
55
|
-
def join(*
|
56
|
-
|
35
|
+
def join(*_args)
|
36
|
+
true
|
57
37
|
end
|
58
38
|
|
59
|
-
# Send each active worker the RocketJob::ShutdownException so that stops processing immediately.
|
60
39
|
def kill
|
61
|
-
|
62
|
-
|
63
|
-
@thread.raise(Shutdown, "Shutdown due to kill request for worker: #{name}") if @thread.alive?
|
40
|
+
true
|
64
41
|
end
|
65
42
|
|
66
43
|
def shutdown?
|
67
|
-
|
44
|
+
false
|
68
45
|
end
|
69
46
|
|
70
47
|
def shutdown!
|
71
|
-
|
48
|
+
true
|
72
49
|
end
|
73
50
|
|
74
51
|
# Returns [true|false] whether the shutdown indicator was set
|
75
|
-
def wait_for_shutdown?(
|
76
|
-
|
52
|
+
def wait_for_shutdown?(_timeout = nil)
|
53
|
+
false
|
77
54
|
end
|
78
55
|
|
79
56
|
# Process jobs until it shuts down
|
@@ -146,6 +123,8 @@ module RocketJob
|
|
146
123
|
|
147
124
|
# Should this job be throttled?
|
148
125
|
next if job.fail_on_exception! { throttled_job?(job) }
|
126
|
+
# Job failed during throttle execution?
|
127
|
+
next if job.failed?
|
149
128
|
|
150
129
|
# Start this job!
|
151
130
|
job.fail_on_exception! { job.start!(name) }
|
@@ -171,27 +150,14 @@ module RocketJob
|
|
171
150
|
# Applies the current filter to exclude filtered jobs.
|
172
151
|
#
|
173
152
|
# Returns nil if no jobs are available for processing.
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
else
|
186
|
-
def find_and_assign_job
|
187
|
-
SemanticLogger.silence(:info) do
|
188
|
-
scheduled = {"$or" => [{run_at: nil}, {:run_at.lte => Time.now}]}
|
189
|
-
working = {"$or" => [{state: :queued}, {state: :running, sub_state: :processing}]}
|
190
|
-
query = RocketJob::Job.and(working, scheduled)
|
191
|
-
query = query.where(current_filter) unless current_filter.blank?
|
192
|
-
update = {"$set" => {"worker_name" => name, "state" => "running"}}
|
193
|
-
query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
|
194
|
-
end
|
153
|
+
def find_and_assign_job
|
154
|
+
SemanticLogger.silence(:info) do
|
155
|
+
scheduled = RocketJob::Job.where(run_at: nil).or(:run_at.lte => Time.now)
|
156
|
+
working = RocketJob::Job.queued.or(state: "running", sub_state: "processing")
|
157
|
+
query = RocketJob::Job.and(working, scheduled)
|
158
|
+
query = query.and(current_filter) unless current_filter.blank?
|
159
|
+
update = {"$set" => {"worker_name" => name, "state" => "running"}}
|
160
|
+
query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
|
195
161
|
end
|
196
162
|
end
|
197
163
|
|
@@ -69,12 +69,10 @@ module RocketJob
|
|
69
69
|
# Return [false] on timeout
|
70
70
|
def join(timeout = 5)
|
71
71
|
while (worker = workers.first)
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
return false
|
77
|
-
end
|
72
|
+
return false unless worker.join(timeout)
|
73
|
+
|
74
|
+
# Worker thread is dead
|
75
|
+
workers.shift
|
78
76
|
end
|
79
77
|
true
|
80
78
|
end
|
@@ -91,7 +89,7 @@ module RocketJob
|
|
91
89
|
private
|
92
90
|
|
93
91
|
def add_one
|
94
|
-
workers <<
|
92
|
+
workers << ThreadWorker.new(id: next_worker_id, server_name: server_name)
|
95
93
|
rescue StandardError => e
|
96
94
|
logger.fatal("Cannot start worker", e)
|
97
95
|
end
|
data/lib/rocketjob.rb
CHANGED
@@ -3,6 +3,8 @@ require "semantic_logger"
|
|
3
3
|
require "symmetric-encryption"
|
4
4
|
require "mongoid"
|
5
5
|
require "rocket_job/extensions/mongo/logging"
|
6
|
+
require "rocket_job/extensions/iostreams/path"
|
7
|
+
require "rocket_job/extensions/psych/yaml_tree"
|
6
8
|
require "rocket_job/version"
|
7
9
|
require "rocket_job/rocket_job"
|
8
10
|
require "rocket_job/config"
|
@@ -13,28 +15,37 @@ require "rocket_job/extensions/mongoid/clients/options"
|
|
13
15
|
require "rocket_job/extensions/mongoid/contextual/mongo"
|
14
16
|
require "rocket_job/extensions/mongoid/factory"
|
15
17
|
|
16
|
-
#
|
17
|
-
require "rocket_job/extensions/mongoid/
|
18
|
+
# Backport New StringifiedSymbol type in Mongoid v7.2
|
19
|
+
require "rocket_job/extensions/mongoid/stringified_symbol" unless defined?(Mongoid::StringifiedSymbol)
|
18
20
|
|
19
21
|
# @formatter:off
|
20
22
|
module RocketJob
|
21
|
-
autoload :ActiveWorker,
|
22
|
-
autoload :Batch,
|
23
|
-
autoload :CLI,
|
24
|
-
autoload :DirmonEntry,
|
25
|
-
autoload :Event,
|
26
|
-
autoload :Heartbeat,
|
27
|
-
autoload :Job,
|
28
|
-
autoload :JobException,
|
29
|
-
autoload :
|
30
|
-
autoload :
|
31
|
-
autoload :
|
32
|
-
autoload :
|
33
|
-
autoload :
|
34
|
-
autoload :
|
35
|
-
autoload :
|
36
|
-
autoload :
|
37
|
-
autoload :
|
23
|
+
autoload :ActiveWorker, "rocket_job/active_worker"
|
24
|
+
autoload :Batch, "rocket_job/batch"
|
25
|
+
autoload :CLI, "rocket_job/cli"
|
26
|
+
autoload :DirmonEntry, "rocket_job/dirmon_entry"
|
27
|
+
autoload :Event, "rocket_job/event"
|
28
|
+
autoload :Heartbeat, "rocket_job/heartbeat"
|
29
|
+
autoload :Job, "rocket_job/job"
|
30
|
+
autoload :JobException, "rocket_job/job_exception"
|
31
|
+
autoload :LookupCollection, "rocket_job/lookup_collection"
|
32
|
+
autoload :Worker, "rocket_job/worker"
|
33
|
+
autoload :Performance, "rocket_job/performance"
|
34
|
+
autoload :RactorWorker, "rocket_job/ractor_worker"
|
35
|
+
autoload :Server, "rocket_job/server"
|
36
|
+
autoload :Sliced, "rocket_job/sliced"
|
37
|
+
autoload :Subscriber, "rocket_job/subscriber"
|
38
|
+
autoload :Supervisor, "rocket_job/supervisor"
|
39
|
+
autoload :ThreadWorker, "rocket_job/thread_worker"
|
40
|
+
autoload :ThrottleDefinition, "rocket_job/throttle_definition"
|
41
|
+
autoload :ThrottleDefinitions, "rocket_job/throttle_definitions"
|
42
|
+
autoload :WorkerPool, "rocket_job/worker_pool"
|
43
|
+
|
44
|
+
module Category
|
45
|
+
autoload :Base, "rocket_job/category/base"
|
46
|
+
autoload :Input, "rocket_job/category/input"
|
47
|
+
autoload :Output, "rocket_job/category/output"
|
48
|
+
end
|
38
49
|
|
39
50
|
module Plugins
|
40
51
|
module Job
|
@@ -49,38 +60,37 @@ module RocketJob
|
|
49
60
|
autoload :Transaction, "rocket_job/plugins/job/transaction"
|
50
61
|
autoload :Worker, "rocket_job/plugins/job/worker"
|
51
62
|
end
|
52
|
-
autoload :Cron,
|
53
|
-
autoload :Document,
|
54
|
-
autoload :ProcessingWindow,
|
55
|
-
autoload :Restart,
|
56
|
-
autoload :Retry,
|
57
|
-
autoload :Singleton,
|
58
|
-
autoload :StateMachine,
|
59
|
-
autoload :Transaction,
|
63
|
+
autoload :Cron, "rocket_job/plugins/cron"
|
64
|
+
autoload :Document, "rocket_job/plugins/document"
|
65
|
+
autoload :ProcessingWindow, "rocket_job/plugins/processing_window"
|
66
|
+
autoload :Restart, "rocket_job/plugins/restart"
|
67
|
+
autoload :Retry, "rocket_job/plugins/retry"
|
68
|
+
autoload :Singleton, "rocket_job/plugins/singleton"
|
69
|
+
autoload :StateMachine, "rocket_job/plugins/state_machine"
|
70
|
+
autoload :Transaction, "rocket_job/plugins/transaction"
|
71
|
+
autoload :ThrottleDependentJobs, "rocket_job/plugins/throttle_dependent_jobs"
|
60
72
|
end
|
61
73
|
|
62
74
|
module Jobs
|
63
|
-
autoload :ActiveJob,
|
64
|
-
autoload :CopyFileJob,
|
65
|
-
autoload :DirmonJob,
|
66
|
-
autoload :OnDemandBatchJob,
|
67
|
-
autoload :
|
68
|
-
autoload :
|
69
|
-
autoload :
|
70
|
-
autoload :
|
71
|
-
autoload :
|
72
|
-
|
75
|
+
autoload :ActiveJob, "rocket_job/jobs/active_job"
|
76
|
+
autoload :CopyFileJob, "rocket_job/jobs/copy_file_job"
|
77
|
+
autoload :DirmonJob, "rocket_job/jobs/dirmon_job"
|
78
|
+
autoload :OnDemandBatchJob, "rocket_job/jobs/on_demand_batch_job"
|
79
|
+
autoload :OnDemandJob, "rocket_job/jobs/on_demand_job"
|
80
|
+
autoload :HousekeepingJob, "rocket_job/jobs/housekeeping_job"
|
81
|
+
autoload :PerformanceJob, "rocket_job/jobs/performance_job"
|
82
|
+
autoload :SimpleJob, "rocket_job/jobs/simple_job"
|
83
|
+
autoload :UploadFileJob, "rocket_job/jobs/upload_file_job"
|
84
|
+
|
73
85
|
module ReEncrypt
|
74
|
-
|
75
|
-
autoload :RelationalJob, "rocket_job/jobs/re_encrypt/relational_job"
|
76
|
-
end
|
86
|
+
autoload :RelationalJob, "rocket_job/jobs/re_encrypt/relational_job"
|
77
87
|
end
|
78
88
|
end
|
79
89
|
|
80
90
|
module Subscribers
|
81
|
-
autoload :Logger,
|
82
|
-
autoload :Server,
|
83
|
-
autoload :Worker,
|
91
|
+
autoload :Logger, "rocket_job/subscribers/logger"
|
92
|
+
autoload :Server, "rocket_job/subscribers/server"
|
93
|
+
autoload :Worker, "rocket_job/subscribers/worker"
|
84
94
|
end
|
85
95
|
end
|
86
96
|
|