acidic_job 1.0.0.beta.5 → 1.0.0.beta.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/acidic_job/errors.rb +1 -0
- data/lib/acidic_job/mixin.rb +3 -6
- data/lib/acidic_job/processor.rb +7 -8
- data/lib/acidic_job/run.rb +5 -1
- data/lib/acidic_job/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81769867ab7962af7062bc8714523d8743a629b3e13eb71f6f5561024bfe795c
|
4
|
+
data.tar.gz: bc8ca04208ed63b2a70839490a44102868238df48740a19f7a1d08d19115b29b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9cc54a6e0956fed6fb57babdca80a95126810dae84d244abbd162e428bb52bb7cc59ccf34e2f5a9fea29ac7ea719919bd2c8f6fbe026e167947a69aae794be3
|
7
|
+
data.tar.gz: eefa772f9f26643ba39048f6d61b460a08b55c635386803df62e476edf3b00c77000380b0b3bf94fbe00b4d11ece3cdd764f07d97ab656e6aa54e41097f7df47
|
data/Gemfile.lock
CHANGED
data/lib/acidic_job/errors.rb
CHANGED
data/lib/acidic_job/mixin.rb
CHANGED
@@ -81,12 +81,9 @@ module AcidicJob
|
|
81
81
|
@workflow_builder = WorkflowBuilder.new
|
82
82
|
|
83
83
|
raise MissingWorkflowBlock, "A block must be passed to `with_acidic_workflow`" unless block_given?
|
84
|
+
raise MissingBlockArgument, "An argument must be passed to the `with_acidic_workflow` block" if block.arity.zero?
|
84
85
|
|
85
|
-
|
86
|
-
@workflow_builder.instance_exec(&block)
|
87
|
-
else
|
88
|
-
yield @workflow_builder
|
89
|
-
end
|
86
|
+
block.call @workflow_builder
|
90
87
|
|
91
88
|
raise NoDefinedSteps if @workflow_builder.steps.empty?
|
92
89
|
|
@@ -230,7 +227,7 @@ module AcidicJob
|
|
230
227
|
|
231
228
|
# "STG__#{idempotency_key}__#{encoded_global_id}"
|
232
229
|
_prefix, _idempotency_key, encoded_global_id = job_id.split("__")
|
233
|
-
staged_job_gid = "gid://#{::Base64.
|
230
|
+
staged_job_gid = "gid://#{::Base64.urlsafe_decode64(encoded_global_id)}"
|
234
231
|
|
235
232
|
@staged_job_run = ::GlobalID::Locator.locate(staged_job_gid)
|
236
233
|
end
|
data/lib/acidic_job/processor.rb
CHANGED
@@ -19,7 +19,7 @@ module AcidicJob
|
|
19
19
|
if !@run.known_recovery_point?
|
20
20
|
raise UnknownRecoveryPoint,
|
21
21
|
"Defined workflow does not reference this step: #{@run.current_step_name.inspect}"
|
22
|
-
elsif
|
22
|
+
elsif (awaited_jobs = jobs_from(@run.current_step_awaits)).any?
|
23
23
|
# We only execute the current step, without progressing to the next step.
|
24
24
|
# This ensures that any failures in parallel jobs will have this step retried in the main workflow
|
25
25
|
step_result = @workflow.execute_current_step
|
@@ -47,14 +47,12 @@ module AcidicJob
|
|
47
47
|
|
48
48
|
private
|
49
49
|
|
50
|
-
def enqueue_awaited_jobs(
|
51
|
-
awaited_jobs = jobs_from(jobs_or_jobs_getter)
|
52
|
-
|
50
|
+
def enqueue_awaited_jobs(awaited_jobs, step_result)
|
53
51
|
AcidicJob.logger.log_run_event("Enqueuing #{awaited_jobs.count} awaited jobs...", @job, @run)
|
54
52
|
# All jobs created in the block are pushed atomically at the end of the block.
|
55
53
|
AcidicJob::Run.transaction do
|
56
54
|
awaited_jobs.each do |awaited_job|
|
57
|
-
worker_class, args =
|
55
|
+
worker_class, args = job_and_args(awaited_job)
|
58
56
|
|
59
57
|
job = worker_class.new(*args)
|
60
58
|
|
@@ -67,10 +65,11 @@ module AcidicJob
|
|
67
65
|
def jobs_from(jobs_or_jobs_getter)
|
68
66
|
case jobs_or_jobs_getter
|
69
67
|
when Array
|
70
|
-
jobs_or_jobs_getter
|
68
|
+
jobs_or_jobs_getter.compact
|
71
69
|
when Symbol, String
|
72
70
|
if @job.respond_to?(jobs_or_jobs_getter, _include_private = true)
|
73
|
-
@job.method(jobs_or_jobs_getter).call
|
71
|
+
jobs = @job.method(jobs_or_jobs_getter).call
|
72
|
+
Array(jobs).compact
|
74
73
|
else
|
75
74
|
raise UnknownAwaitedJob,
|
76
75
|
"Invalid `awaits`; unknown method `#{jobs_or_jobs_getter}` for this job"
|
@@ -81,7 +80,7 @@ module AcidicJob
|
|
81
80
|
end
|
82
81
|
end
|
83
82
|
|
84
|
-
def
|
83
|
+
def job_and_args(job)
|
85
84
|
case job
|
86
85
|
when Class
|
87
86
|
[job, []]
|
data/lib/acidic_job/run.rb
CHANGED
@@ -130,7 +130,7 @@ module AcidicJob
|
|
130
130
|
# encode the identifier for this record in the job ID
|
131
131
|
global_id = to_global_id.to_s.remove("gid://")
|
132
132
|
# base64 encoding for minimal security
|
133
|
-
encoded_global_id = Base64.
|
133
|
+
encoded_global_id = Base64.urlsafe_encode64(global_id, padding: false)
|
134
134
|
|
135
135
|
[
|
136
136
|
STAGED_JOB_ID_PREFIX,
|
@@ -173,6 +173,10 @@ module AcidicJob
|
|
173
173
|
current_step_hash.fetch("then")
|
174
174
|
end
|
175
175
|
|
176
|
+
def current_step_awaits
|
177
|
+
current_step_hash["awaits"]
|
178
|
+
end
|
179
|
+
|
176
180
|
def next_step_finishes?
|
177
181
|
next_step_name.to_s == FINISHED_RECOVERY_POINT
|
178
182
|
end
|
data/lib/acidic_job/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acidic_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.beta.
|
4
|
+
version: 1.0.0.beta.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fractaledmind
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|