-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add build-id-based reset #333
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,8 +32,10 @@ option ruby_package = "Temporalio::Api::Common::V1"; | |
option csharp_namespace = "Temporalio.Api.Common.V1"; | ||
|
||
import "google/protobuf/duration.proto"; | ||
import "google/protobuf/empty.proto"; | ||
|
||
import "temporal/api/enums/v1/common.proto"; | ||
import "temporal/api/enums/v1/reset.proto"; | ||
|
||
message DataBlob { | ||
temporal.api.enums.v1.EncodingType encoding_type = 1; | ||
|
@@ -147,3 +149,30 @@ message WorkerVersionCapabilities { | |
|
||
// Later, may include info like "I can process WASM and/or JS bundles" | ||
} | ||
|
||
// Describes where and how to reset a workflow, used for batch reset. | ||
message ResetOptions { | ||
// Which workflow task to reset to. | ||
oneof target { | ||
// Resets to the first workflow task completed or started event. | ||
google.protobuf.Empty first_workflow_task = 1; | ||
// Resets to the last workflow task completed or started event. | ||
google.protobuf.Empty last_workflow_task = 2; | ||
// The id of a specific `WORKFLOW_TASK_COMPLETED`,`WORKFLOW_TASK_TIMED_OUT`, `WORKFLOW_TASK_FAILED`, or | ||
// `WORKFLOW_TASK_STARTED` event to reset to. | ||
int64 workflow_task_id = 3; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How are user suppose to use this in batch reset case? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. They're not, this is so we can use the same message for single-workflow reset in the future. I'll add a comment |
||
// Resets to the first workflow task processed by this build id. | ||
// If the workflow was not processed by the build id, or the workflow task can't be | ||
// determined, no reset will be performed. | ||
// Note that by default, this reset is allowed to be to a prior run in a chain of | ||
// continue-as-new. | ||
string build_id = 4; | ||
} | ||
|
||
// History event reapply options. | ||
temporal.api.enums.v1.ResetReapplyType reset_reapply_type = 10; | ||
|
||
// If true, limit the reset to only within the current run. (Applies to build_id targets and | ||
// possibly others in the future.) | ||
bool current_run_only = 11; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm super late to this review but if this doesn't apply to all targets, maybe it would have been better to make
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I always got confused by this. Why not simply reset to the workflow task scheduled event?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As far as I understand it, it always does effectively do that. It just branches history at the workflow task started event and adds a workflow task failed, so nothing from that workflow task takes effect. It's just that you can specify any of those types since they are always contiguous in history.
It does seem like it would be cleaner to branch before the workflow task scheduled event and then create a new one, but I guess there was/is probably a good reason to do it this way. I'm not proposing to change this here, I just copied the comment from
ResetWorkflowExecutionRequest