Skip to content

fix: reject restore_original when a standalone activity has no original options snapshot#11013

Merged
spkane31 merged 1 commit into
feature/activity-operator-cmdsfrom
spk/update-options-nil
Jul 13, 2026
Merged

fix: reject restore_original when a standalone activity has no original options snapshot#11013
spkane31 merged 1 commit into
feature/activity-operator-cmdsfrom
spk/update-options-nil

Conversation

@spkane31

Copy link
Copy Markdown
Contributor

What changed?

Added a guard that rejects UpdateOptions(restore_original=true) requests on a standalone activity when its OriginalOptions snapshot is missing.

Why?

A standalone activity started before OriginalOptions existed deserializes with OriginalOptions == nil. Restoring such an activity previously succeeded silently, wiping TaskQueue and both close/start timeouts, leaving the activity in an invalid configuration.

How did you test it?

  • built
  • run locally and tested manually
  • covered by existing tests
  • added new unit test(s)
  • added new functional test(s)

Potential risks

None, this feature has not been rolled out.

@spkane31
spkane31 requested review from a team as code owners July 10, 2026 20:11
@spkane31
spkane31 requested a review from fretz12 July 10, 2026 20:25
@spkane31
spkane31 changed the base branch from main to feature/activity-operator-cmds July 10, 2026 20:34
@spkane31
spkane31 requested a review from dandavison July 10, 2026 21:15
@spkane31
spkane31 merged commit cf5cb76 into feature/activity-operator-cmds Jul 13, 2026
73 of 75 checks passed
@spkane31
spkane31 deleted the spk/update-options-nil branch July 13, 2026 15:46
dandavison pushed a commit that referenced this pull request Jul 18, 2026
Implements Pause, Unpause, Reset, and UpdateActivityExecutionOptions
RPCs for standalone CHASM activities. Adds matching frontend and
history service handlers in chasm/lib/activity that dispatch to
either the workflow-activity path or the standalone-activity path
based on the presence of a workflow ID.

Also adds PAUSE_REQUESTED and RESET_REQUESTED state machine states
for standalone activities, the original_options snapshot for
restore-on-reset semantics, the activity-options merge helpers
(common/activityoptions), and the supporting proto schema changes
(start_request_id, sdk_name, sdk_version, etc.).

Squashed PRs:
  #9693  RPC boilerplate and code generation
  #9850  Implement UpdateActivityExecutionOptions
  #9851  Implement Pause/UnpauseActivityExecution for SAA
  #9852  Implement ResetActivityExecution for SAA
  #10001 Pause returns FailedPrecondition when already paused
  #10025 Validator function fixes
  #10265 Replace PauseState flag with PAUSE_REQUESTED state
  #10364 Add RESET_REQUESTED state to standalone activity
  #10745 Add support for updating start_delay via UpdateActivityOptions
  #10913 Preserve SAA retry backoff across unpause re-dispatch
  #10914 Fix SAA unpause for keep-paused reset
  #10917 Reject stale legacy SAA schedule-to-close timers
  #10920 Preserve NextRetryDelay across unrelated activity option updates
  #10921 Validate merged SAA retry policy updates
  #10923 Fix SAA reset attempt dispatch time reporting
  #11010 Use default retry policy when updating with nil
  #11020 Fix: de-duplicate pause even if activity is unpaused
  #11013 Fix: reject restore_original when a standalone activity has no original options snapshot
  #11032 Reject unsupported and empty update_mask paths in UpdateActivityExecutionOptions
  #11030 Fix: describe only provides heartbeat/failure when opted-in
  #11016 Preserve pending activity next retry delay
  #11068 Add SAA operator APIs to DC redirection whitelist
  #10954 Remove reset_heartbeats field in ResetActivityExecutionRequest
  #11087 Fix standalone activity heartbeat flag precedence
  #11117 Validation to reject negative activity jitter
  #11120 Fix bogus StartToCloseLatency for non-running standalone activities
  #11097 Fix task token invalidation after resetting an activity
  #11067 SAA bug fix: update start delay while paused
  #11123 SAA: cleanup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants