Skip to content

time-skipping refinements of propagation and describe - #11259

Closed
feiyang3cat wants to merge 21 commits into
temporalio:fx/vts-descrip-poll-maxskipfrom
feiyang3cat:vts-refinements
Closed

time-skipping refinements of propagation and describe#11259
feiyang3cat wants to merge 21 commits into
temporalio:fx/vts-descrip-poll-maxskipfrom
feiyang3cat:vts-refinements

Conversation

@feiyang3cat

@feiyang3cat feiyang3cat commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What changed and why

  1. add current effective config, fast-forward and max skip runtime fields in DescribeWorkflowExecution so that users can check the time skipping runtime status in case they need it
  2. change internal propagation behavior over a chain of runs: always propagate the configuration and state, regardless of whether time skipping is running or not so that new reading APIs like poll and describe can works naturally on a new run.
  3. edgy case handling: handle due fast-forward in initTimeSkippingInfo and TimeSkippingTransition.GateFastForward

if _, ok := updateFields["timeSkippingConfig"]; ok {
mergeInto.TimeSkippingConfig = mergeFrom.GetTimeSkippingConfig()
if mergeFrom.GetTimeSkippingConfig().GetFastForward() != nil {
if mergeFrom.GetTimeSkippingConfig().GetFastForwardConfig() != nil {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rebase vts-polling-ffid

if propagatedTargetTime != nil {
targetTime = propagatedTargetTime.AsTime()
// A propagated target may already be due; a due target is a completed fast-forward.
hasReached = !ms.Now().Before(targetTime)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

flip enabled status

@feiyang3cat
feiyang3cat force-pushed the vts-refinements branch 14 times, most recently from ff78cc9 to 608c2cf Compare July 28, 2026 04:24
add archetypeID to notifier;
always check ffid first;
add quota;
add polling mechanism,
simplify result enum,
Squash of the vts-refinements work onto vts-polling-ffid, reconciled to
polling-ffid's go.temporal.io/api version (nested FastForwardConfig,
TimeSkippingInfo without IsRunning) and its fast_forward_id validation.

Net change is confined to timeskipping.go and its test, since the two
branches had converged elsewhere:
- applyFastForward: gate on FastForwardConfig presence, compute HasReached
  for propagated targets, and only schedule the timer when the target is
  pending and skipping is enabled.
- propagateTimeSkippingToNextRun: propagate config regardless of
  enabled/running state and forward the fast-forward target time (incl.
  stale/completed) so readers on the next run see full info.
- GateByFastForward: handle a stale (already-due) fast-forward target.
- describe/poll: map fast-forward info via ToFastForwardInfo
  (EffectiveConfig + FastForwardInfo, FastForwardDuration populated).
@feiyang3cat
feiyang3cat force-pushed the fx/vts-descrip-poll-maxskip branch 4 times, most recently from 93a35f8 to 5db0ac2 Compare July 30, 2026 21:09
@feiyang3cat
feiyang3cat deleted the branch temporalio:fx/vts-descrip-poll-maxskip July 31, 2026 00:04
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.

1 participant