diff --git a/lib/temporal/workflow/state_manager.rb b/lib/temporal/workflow/state_manager.rb index c54def51..7d26634f 100644 --- a/lib/temporal/workflow/state_manager.rb +++ b/lib/temporal/workflow/state_manager.rb @@ -63,7 +63,7 @@ def schedule(command) end def release?(release_name) - track_release(release_name) unless releases.key?(release_name) + track_release(release_name) releases[release_name] end @@ -352,8 +352,9 @@ def handle_marker(id, type, details) def track_release(release_name) # replay does not allow untracked (via marker) releases if replay? - releases[release_name] = false - else + releases[release_name] = false unless releases.key?(release_name) + elsif !releases.fetch(release_name, false) + # track the release if it hasn't been seen before or if it was previously false releases[release_name] = true schedule(Command::RecordMarker.new(name: RELEASE_MARKER, details: release_name)) end diff --git a/spec/unit/lib/temporal/workflow/state_manager_spec.rb b/spec/unit/lib/temporal/workflow/state_manager_spec.rb index 57745b71..2f9ef656 100644 --- a/spec/unit/lib/temporal/workflow/state_manager_spec.rb +++ b/spec/unit/lib/temporal/workflow/state_manager_spec.rb @@ -36,4 +36,4 @@ class MyWorkflow < Temporal::Workflow; end end end end -end \ No newline at end of file +end