Module: Smith::Workflow::SplitStepPersistence::Preparation
- Included in:
- Smith::Workflow::SplitStepPersistence
- Defined in:
- lib/smith/workflow/split_step_persistence/preparation.rb
Instance Method Summary collapse
- #confirm_prepared_step! ⇒ Object
- #prepare_persisted_step!(key = nil, adapter: Smith.persistence_adapter) ⇒ Object
- #prepared_persisted_step ⇒ Object
Instance Method Details
#confirm_prepared_step! ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/smith/workflow/split_step_persistence/preparation.rb', line 29 def confirm_prepared_step! confirmation_claimed = false claim_split_step_confirmation! confirmation_claimed = true confirmed = false payload = @split_step_adapter.fetch(@split_step_persistence_key) raise WorkflowError, "the persisted split-step preparation is not committed" unless persisted_split_step_payload?(payload, @split_step_preparation_payload) @split_step_mutex.synchronize do @split_step_phase = :prepared @split_step_transaction_thread = nil @split_step_transaction_identity = nil end confirmed = true self ensure restore_unconfirmed_preparation! if confirmation_claimed && !confirmed end |
#prepare_persisted_step!(key = nil, adapter: Smith.persistence_adapter) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/smith/workflow/split_step_persistence/preparation.rb', line 15 def prepare_persisted_step!(key = nil, adapter: Smith.persistence_adapter) ensure_strict_split_step_persistence! intent_claimed = claim_split_step_preparation_intent! return unless intent_claimed preparation_finalized = false prepare_claimed_persisted_step!(key, adapter) preparation_finalized = true persist_claimed_split_step_preparation!(@split_step_persistence_key, @split_step_adapter) @split_step_transition_name ensure release_split_step_preparation_intent! if intent_claimed && !preparation_finalized end |
#prepared_persisted_step ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/smith/workflow/split_step_persistence/preparation.rb', line 49 def prepared_persisted_step phase, descriptor, adapter, transaction_identity = @split_step_mutex.synchronize do [ @split_step_phase, @split_step_prepared_descriptor, @split_step_adapter, @split_step_transaction_identity ] end return unless DESCRIPTOR_PHASES.include?(phase) && descriptor return descriptor unless phase == :prepared_uncommitted descriptor if TransactionIdentity.matches?(adapter, transaction_identity) end |