Module: Smith::Workflow::SplitStepPersistence::DispatchConfirmation

Included in:
Smith::Workflow::SplitStepPersistence
Defined in:
lib/smith/workflow/split_step_persistence/dispatch_confirmation.rb

Instance Method Summary collapse

Instance Method Details

#confirm_prepared_step_dispatch!Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/smith/workflow/split_step_persistence/dispatch_confirmation.rb', line 7

def confirm_prepared_step_dispatch!
  confirmation_claimed = false
  rolled_back = false
  claim_dispatch_confirmation!
  confirmation_claimed = true
  payload = @split_step_adapter.fetch(@split_step_persistence_key)
  return confirm_committed_dispatch! if persisted_split_step_payload?(payload, @split_step_preparation_payload)

  rolled_back = recover_rolled_back_dispatch!(payload)
  raise WorkflowError, "the persisted split-step dispatch claim is not committed"
rescue StandardError
  mark_unconfirmed_dispatch_unknown! if confirmation_claimed && !rolled_back
  raise
end