Repository navigation
feature-pre-release: new time skipping for workflows and schedules - #1246
feiyang3cat wants to merge 11 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
This PR depends on
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ebca3a6d9f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
1dd4c0f to
c4691de
Compare
manual testingHappy Path: workflow time skipping(1) build both dev and server with a different name go build -o /tmp/temporal-vts ./cmd/temporal(2)Start the local server with Workflow and Schedule time skipping enabled for all Namespaces (terminal 1) Note: Schedule time skipping requires CHASM Schedules. This flag also enables CHASM creation for new Schedules. /tmp/temporal-vts server start-dev \
--namespace timeskipping-test \
--enable-time-skippingcheck webUI: http://localhost:8233/ (3)start your worker (terminal-2) (4) start workflow first without time skipping (terimnal-3) and check in webUI /tmp/temporal-vts workflow start \
--namespace timeskipping-test \
--workflow-id vts-workflow-1 \
--type TimerWorkflow \
--task-queue vts-test-queue(5) (option-1) start time skipping to run the workflow to completion(terimnal-3) and check in webUI to find time is skipped and workflow runs to completion /tmp/temporal-vts workflow time-skipping enable \
--namespace timeskipping-test \
--workflow-id vts-workflow-1 \(5)(option-2) start time skipping with a shorter fast-forward if you want your time skipping stop somewhere (terimnal-3) and check in webUI /tmp/temporal-vts workflow time-skipping enable \
--namespace timeskipping-test \
--workflow-id vts-workflow-1 \
--fast-forward-duration 5h \
--fast-forward-id manual-wf-ff-1 \
/tmp/temporal-vts workflow time-skipping poll \
--namespace timeskipping-test \
--workflow-id vts-workflow-1 \
--fast-forward-id manual-wf-ff-1check in details of the event WorkflowExecutionTimeSkippingTransitioned to see 5 hours move forward {
"eventId": "7",
"eventTime": "2026-10-27T20:19:27.266214Z",
"eventType": "WorkflowExecutionTimeSkippingTransitioned",
"taskId": "1048603",
"workerMayIgnore": true,
"workflowExecutionTimeSkippingTransitionedEventAttributes": {
"targetTime": "2026-10-28T01:19:27.266156Z",
"disabledAfterFastForward": true,
"wallClockTime": "2026-10-27T20:19:27.266214Z"
},
"links": [],
"billableActions": 0
}Happy Path: schedule time skipping
Error caseSchedule enable requires a fast-forward duration: /tmp/temporal-vts schedule time-skipping enable \
--namespace YourNamespace \
--schedule-id YourScheduleId
echo $?Expected error and exit code: Workflow enable rejects a fast-forward ID without a duration: /tmp/temporal-vts workflow time-skipping enable \
--namespace YourNamespace \
--workflow-id YourWorkflowId \
--fast-forward-id YourWorkflowFastForwardId
echo $?Expected error and exit code: CompositionStart another Workflow to test a partial fast-forward: /tmp/temporal-vts workflow start \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowId \
--type TimerWorkflow \
--task-queue YourTaskQueue
/tmp/temporal-vts workflow time-skipping enable \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowId \
--fast-forward-duration 5hCopy the generated fast-forward ID from the output and use it as /tmp/temporal-vts workflow time-skipping poll \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowId \
--fast-forward-id YourFastForwardIdExpected output: This means the five-hour fast-forward completed. The Workflow’s ten-hour timer should still be pending. Inspect the effective configuration and fast-forward status: /tmp/temporal-vts workflow describe \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowIdIn the Web UI at http://localhost:8233/, select Disable time skipping and describe again: /tmp/temporal-vts workflow time-skipping disable \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowId
/tmp/temporal-vts workflow describe \
--namespace YourNamespace \
--workflow-id YourPartialWorkflowIdConfirm that For the Schedule created in the happy-path test, inspect its status, then disable time skipping: /tmp/temporal-vts schedule describe \
--namespace YourNamespace \
--schedule-id YourScheduleId
/tmp/temporal-vts schedule time-skipping disable \
--namespace YourNamespace \
--schedule-id YourScheduleId
/tmp/temporal-vts schedule describe \
--namespace YourNamespace \
--schedule-id YourScheduleIdConfirm that |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f190d21f0e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
8d1ae22 to
2f14e42
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2f14e42094
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
0d5818e to
cf312a5
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf312a5a97
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
cf312a5 to
88c1554
Compare
| StartDelay: opts.StartDelay.Duration(), | ||
| Summary: opts.StaticSummary, | ||
| Details: opts.StaticDetails, | ||
| StaticDetails: opts.StaticDetails, |
There was a problem hiding this comment.
due to SDK version bump
faf0adb to
66ce2f0
Compare
66ce2f0 to
470a6f5
Compare
does this even exists (--timeout option) |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cfa6772817
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| res, err := timeskipping.PollFastForward(cctx, cl, timeskipping.PollFastForwardOptions{ | ||
| WorkflowID: c.WorkflowId, | ||
| RunID: c.RunId, | ||
| FastForwardID: c.FastForwardId, | ||
| }) |
There was a problem hiding this comment.
Bound workflow polling before retrying server timeouts
When a fast-forward remains pending and the caller does not set the global --command-timeout, PollFastForward retries every server-side long-poll timeout against a context with no deadline, so this command can block indefinitely and the poll timed out branch is unreachable. This contradicts the documented behavior in commands.yaml:4629-4630, which says a server timeout is reported so the caller may poll again; either perform a single server poll or give this operation its own bounded context.
Useful? React with 👍 / 👎.
878c14f to
d141452
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d141452260
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
simvlad
left a comment
There was a problem hiding this comment.
workflow part looks good
3dbfb10 to
53f6787
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 53f6787d7b
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
1d1cb30 to
2df0df5
Compare
2df0df5 to
74d5743
Compare
b6e8c2b to
5bec921
Compare
5bec921 to
440c1da
Compare
What changed?
temporal schedule time-skipping enable,disable, andpoll.temporal workflow time-skipping enable,disable, andpoll.--enable-time-skipping(for all namespaces) server flag to enable time skipping for both workflows and schedules, and new chasm schedule will also be enabledChecklist
Stability
-o json/-o jsonl) are treated as breaking changesDesign
temporal <noun> <verb>structure (e.g.temporal workflow start) (similar totemporal workflow update actionthe commands usetemporal workflow time-skipping <verb>andtemporal schedule time-skipping <verb>. The final segment is the action.)--search-attribute, bad:--index-field)(Experimental)incommands.yamlHelp text (see style guide at the top of
commands.yaml)--namespace, not-n), one flag per lineYourXxxform (YourWorkflowId,YourNamespace)Behavior
Tests
SharedServerSuite)func TestXxx) where applicableManual Testing
too long, added in comments