acidic_job 1.0.0.beta.5 → 1.0.0.beta.8
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.
- 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
|