diff --git a/openapi/openapiv2.json b/openapi/openapiv2.json index 830cf957d..915d8c1c9 100644 --- a/openapi/openapiv2.json +++ b/openapi/openapiv2.json @@ -4429,6 +4429,8 @@ }, "/api/v1/namespaces/{namespace}/workflows/{workflowExecution.workflowId}/time-skipping/poll": { "get": { + "summary": "PollWorkflowExecutionTimeSkipping waits for a fast-forward outcome for a workflow execution.", + "description": "Experimental. Might change in the future.", "operationId": "PollWorkflowExecutionTimeSkipping2", "responses": { "200": { @@ -10012,6 +10014,8 @@ }, "/namespaces/{namespace}/workflows/{workflowExecution.workflowId}/time-skipping/poll": { "get": { + "summary": "PollWorkflowExecutionTimeSkipping waits for a fast-forward outcome for a workflow execution.", + "description": "Experimental. Might change in the future.", "operationId": "PollWorkflowExecutionTimeSkipping", "responses": { "200": { @@ -12499,7 +12503,7 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "Time-skipping configuration. If not set, time skipping is disabled." + "description": "Experimental.\nTime-skipping configuration. If not set, time skipping is disabled." } } }, @@ -12912,7 +12916,7 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "Time-skipping configuration. If not set, time skipping is disabled." + "description": "Experimental.\nTime-skipping configuration. If not set, time skipping is disabled." }, "propagatedNexusSerializationContext": { "$ref": "#/definitions/v1PropagatedSerializationContext", @@ -12920,7 +12924,7 @@ }, "timeSkippingStatePropagation": { "$ref": "#/definitions/v1TimeSkippingStatePropagation", - "description": "Time-skipping state propagated by the execution that started this workflow.\nThis field is intended for use by the Temporal server, for example when a schedule\nstarts a workflow, and is not intended to be set by external clients." + "description": "Experimental.\nTime-skipping state propagated by the execution that started this workflow.\nThis field is intended for use by the Temporal server, for example when a schedule\nstarts a workflow, and is not intended to be set by external clients." } } }, @@ -16174,7 +16178,7 @@ "EVENT_TYPE_WORKFLOW_EXECUTION_TIME_SKIPPING_TRANSITIONED" ], "default": "EVENT_TYPE_UNSPECIFIED", - "description": "- EVENT_TYPE_UNSPECIFIED: Place holder and should never appear in a Workflow execution history\n - EVENT_TYPE_WORKFLOW_EXECUTION_STARTED: Workflow execution has been triggered/started\nIt contains Workflow execution inputs, as well as Workflow timeout configurations\n - EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED: Workflow execution has successfully completed and contains Workflow execution results\n - EVENT_TYPE_WORKFLOW_EXECUTION_FAILED: Workflow execution has unsuccessfully completed and contains the Workflow execution error\n - EVENT_TYPE_WORKFLOW_EXECUTION_TIMED_OUT: Workflow execution has timed out by the Temporal Server\nUsually due to the Workflow having not been completed within timeout settings\n - EVENT_TYPE_WORKFLOW_TASK_SCHEDULED: Workflow Task has been scheduled and the SDK client should now be able to process any new history events\n - EVENT_TYPE_WORKFLOW_TASK_STARTED: Workflow Task has started and the SDK client has picked up the Workflow Task and is processing new history events\n - EVENT_TYPE_WORKFLOW_TASK_COMPLETED: Workflow Task has completed\nThe SDK client picked up the Workflow Task and processed new history events\nSDK client may or may not ask the Temporal Server to do additional work, such as:\nEVENT_TYPE_ACTIVITY_TASK_SCHEDULED\nEVENT_TYPE_TIMER_STARTED\nEVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES\nEVENT_TYPE_MARKER_RECORDED\nEVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED\nEVENT_TYPE_WORKFLOW_EXECUTION_FAILED\nEVENT_TYPE_WORKFLOW_EXECUTION_CANCELED\nEVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW\n - EVENT_TYPE_WORKFLOW_TASK_TIMED_OUT: Workflow Task encountered a timeout\nEither an SDK client with a local cache was not available at the time, or it took too long for the SDK client to process the task\n - EVENT_TYPE_WORKFLOW_TASK_FAILED: Workflow Task encountered a failure\nUsually this means that the Workflow was non-deterministic\nHowever, the Workflow reset functionality also uses this event\n - EVENT_TYPE_ACTIVITY_TASK_SCHEDULED: Activity Task was scheduled\nThe SDK client should pick up this activity task and execute\nThis event type contains activity inputs, as well as activity timeout configurations\n - EVENT_TYPE_ACTIVITY_TASK_STARTED: Activity Task has started executing\nThe SDK client has picked up the Activity Task and is processing the Activity invocation\n - EVENT_TYPE_ACTIVITY_TASK_COMPLETED: Activity Task has finished successfully\nThe SDK client has picked up and successfully completed the Activity Task\nThis event type contains Activity execution results\n - EVENT_TYPE_ACTIVITY_TASK_FAILED: Activity Task has finished unsuccessfully\nThe SDK picked up the Activity Task but unsuccessfully completed it\nThis event type contains Activity execution errors\n - EVENT_TYPE_ACTIVITY_TASK_TIMED_OUT: Activity has timed out according to the Temporal Server\nActivity did not complete within the timeout settings\n - EVENT_TYPE_ACTIVITY_TASK_CANCEL_REQUESTED: A request to cancel the Activity has occurred\nThe SDK client will be able to confirm cancellation of an Activity during an Activity heartbeat\n - EVENT_TYPE_ACTIVITY_TASK_CANCELED: Activity has been cancelled\n - EVENT_TYPE_TIMER_STARTED: A timer has started\n - EVENT_TYPE_TIMER_FIRED: A timer has fired\n - EVENT_TYPE_TIMER_CANCELED: A time has been cancelled\n - EVENT_TYPE_WORKFLOW_EXECUTION_CANCEL_REQUESTED: A request has been made to cancel the Workflow execution\n - EVENT_TYPE_WORKFLOW_EXECUTION_CANCELED: SDK client has confirmed the cancellation request and the Workflow execution has been cancelled\n - EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED: Workflow has requested that the Temporal Server try to cancel another Workflow\n - EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED: Temporal Server could not cancel the targeted Workflow\nThis is usually because the target Workflow could not be found\n - EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED: Temporal Server has successfully requested the cancellation of the target Workflow\n - EVENT_TYPE_MARKER_RECORDED: A marker has been recorded.\nThis event type is transparent to the Temporal Server\nThe Server will only store it and will not try to understand it.\n - EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED: Workflow has received a Signal event\nThe event type contains the Signal name, as well as a Signal payload\n - EVENT_TYPE_WORKFLOW_EXECUTION_TERMINATED: Workflow execution has been forcefully terminated\nThis is usually because the terminate Workflow API was called\n - EVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW: Workflow has successfully completed and a new Workflow has been started within the same transaction\nContains last Workflow execution results as well as new Workflow execution inputs\n - EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED: Temporal Server will try to start a child Workflow\n - EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_FAILED: Child Workflow execution cannot be started/triggered\nUsually due to a child Workflow ID collision\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_STARTED: Child Workflow execution has successfully started/triggered\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_COMPLETED: Child Workflow execution has successfully completed\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_FAILED: Child Workflow execution has unsuccessfully completed\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_CANCELED: Child Workflow execution has been cancelled\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TIMED_OUT: Child Workflow execution has timed out by the Temporal Server\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TERMINATED: Child Workflow execution has been terminated\n - EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED: Temporal Server will try to Signal the targeted Workflow\nContains the Signal name, as well as a Signal payload\n - EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED: Temporal Server cannot Signal the targeted Workflow\nUsually because the Workflow could not be found\n - EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_SIGNALED: Temporal Server has successfully Signaled the targeted Workflow\n - EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES: Workflow search attributes should be updated and synchronized with the visibility store\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ADMITTED: An update was admitted. Note that not all admitted updates result in this\nevent. See UpdateAdmittedEventOrigin for situations in which this event\nis created.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED: An update was accepted (i.e. passed validation, perhaps because no validator was defined)\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED: This event is never written to history.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_COMPLETED: An update completed\n - EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED_EXTERNALLY: Some property or properties of the workflow as a whole have changed by non-workflow code.\nThe distinction of external vs. command-based modification is important so the SDK can\nmaintain determinism when using the command-based approach.\n - EVENT_TYPE_ACTIVITY_PROPERTIES_MODIFIED_EXTERNALLY: Some property or properties of an already-scheduled activity have changed by non-workflow code.\nThe distinction of external vs. command-based modification is important so the SDK can\nmaintain determinism when using the command-based approach.\n - EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED: Workflow properties modified by user workflow code\n - EVENT_TYPE_NEXUS_OPERATION_SCHEDULED: A Nexus operation was scheduled using a ScheduleNexusOperation command.\n - EVENT_TYPE_NEXUS_OPERATION_STARTED: An asynchronous Nexus operation was started by a Nexus handler.\n - EVENT_TYPE_NEXUS_OPERATION_COMPLETED: A Nexus operation completed successfully.\n - EVENT_TYPE_NEXUS_OPERATION_FAILED: A Nexus operation failed.\n - EVENT_TYPE_NEXUS_OPERATION_CANCELED: A Nexus operation completed as canceled.\n - EVENT_TYPE_NEXUS_OPERATION_TIMED_OUT: A Nexus operation timed out.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUESTED: A Nexus operation was requested to be canceled using a RequestCancelNexusOperation command.\n - EVENT_TYPE_WORKFLOW_EXECUTION_OPTIONS_UPDATED: Workflow execution options updated by user.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_COMPLETED: A cancellation request for a Nexus operation was successfully delivered to the Nexus handler.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_FAILED: A cancellation request for a Nexus operation resulted in an error.\n - EVENT_TYPE_WORKFLOW_EXECUTION_PAUSED: An event that indicates that the workflow execution has been paused.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UNPAUSED: An event that indicates that the previously paused workflow execution has been unpaused.\n - EVENT_TYPE_WORKFLOW_EXECUTION_TIME_SKIPPING_TRANSITIONED: An event that indicates time skipping advanced time or was disabled automatically after a bound was reached.", + "description": "- EVENT_TYPE_UNSPECIFIED: Place holder and should never appear in a Workflow execution history\n - EVENT_TYPE_WORKFLOW_EXECUTION_STARTED: Workflow execution has been triggered/started\nIt contains Workflow execution inputs, as well as Workflow timeout configurations\n - EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED: Workflow execution has successfully completed and contains Workflow execution results\n - EVENT_TYPE_WORKFLOW_EXECUTION_FAILED: Workflow execution has unsuccessfully completed and contains the Workflow execution error\n - EVENT_TYPE_WORKFLOW_EXECUTION_TIMED_OUT: Workflow execution has timed out by the Temporal Server\nUsually due to the Workflow having not been completed within timeout settings\n - EVENT_TYPE_WORKFLOW_TASK_SCHEDULED: Workflow Task has been scheduled and the SDK client should now be able to process any new history events\n - EVENT_TYPE_WORKFLOW_TASK_STARTED: Workflow Task has started and the SDK client has picked up the Workflow Task and is processing new history events\n - EVENT_TYPE_WORKFLOW_TASK_COMPLETED: Workflow Task has completed\nThe SDK client picked up the Workflow Task and processed new history events\nSDK client may or may not ask the Temporal Server to do additional work, such as:\nEVENT_TYPE_ACTIVITY_TASK_SCHEDULED\nEVENT_TYPE_TIMER_STARTED\nEVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES\nEVENT_TYPE_MARKER_RECORDED\nEVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED\nEVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED\nEVENT_TYPE_WORKFLOW_EXECUTION_FAILED\nEVENT_TYPE_WORKFLOW_EXECUTION_CANCELED\nEVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW\n - EVENT_TYPE_WORKFLOW_TASK_TIMED_OUT: Workflow Task encountered a timeout\nEither an SDK client with a local cache was not available at the time, or it took too long for the SDK client to process the task\n - EVENT_TYPE_WORKFLOW_TASK_FAILED: Workflow Task encountered a failure\nUsually this means that the Workflow was non-deterministic\nHowever, the Workflow reset functionality also uses this event\n - EVENT_TYPE_ACTIVITY_TASK_SCHEDULED: Activity Task was scheduled\nThe SDK client should pick up this activity task and execute\nThis event type contains activity inputs, as well as activity timeout configurations\n - EVENT_TYPE_ACTIVITY_TASK_STARTED: Activity Task has started executing\nThe SDK client has picked up the Activity Task and is processing the Activity invocation\n - EVENT_TYPE_ACTIVITY_TASK_COMPLETED: Activity Task has finished successfully\nThe SDK client has picked up and successfully completed the Activity Task\nThis event type contains Activity execution results\n - EVENT_TYPE_ACTIVITY_TASK_FAILED: Activity Task has finished unsuccessfully\nThe SDK picked up the Activity Task but unsuccessfully completed it\nThis event type contains Activity execution errors\n - EVENT_TYPE_ACTIVITY_TASK_TIMED_OUT: Activity has timed out according to the Temporal Server\nActivity did not complete within the timeout settings\n - EVENT_TYPE_ACTIVITY_TASK_CANCEL_REQUESTED: A request to cancel the Activity has occurred\nThe SDK client will be able to confirm cancellation of an Activity during an Activity heartbeat\n - EVENT_TYPE_ACTIVITY_TASK_CANCELED: Activity has been cancelled\n - EVENT_TYPE_TIMER_STARTED: A timer has started\n - EVENT_TYPE_TIMER_FIRED: A timer has fired\n - EVENT_TYPE_TIMER_CANCELED: A time has been cancelled\n - EVENT_TYPE_WORKFLOW_EXECUTION_CANCEL_REQUESTED: A request has been made to cancel the Workflow execution\n - EVENT_TYPE_WORKFLOW_EXECUTION_CANCELED: SDK client has confirmed the cancellation request and the Workflow execution has been cancelled\n - EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED: Workflow has requested that the Temporal Server try to cancel another Workflow\n - EVENT_TYPE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_FAILED: Temporal Server could not cancel the targeted Workflow\nThis is usually because the target Workflow could not be found\n - EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_CANCEL_REQUESTED: Temporal Server has successfully requested the cancellation of the target Workflow\n - EVENT_TYPE_MARKER_RECORDED: A marker has been recorded.\nThis event type is transparent to the Temporal Server\nThe Server will only store it and will not try to understand it.\n - EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED: Workflow has received a Signal event\nThe event type contains the Signal name, as well as a Signal payload\n - EVENT_TYPE_WORKFLOW_EXECUTION_TERMINATED: Workflow execution has been forcefully terminated\nThis is usually because the terminate Workflow API was called\n - EVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW: Workflow has successfully completed and a new Workflow has been started within the same transaction\nContains last Workflow execution results as well as new Workflow execution inputs\n - EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED: Temporal Server will try to start a child Workflow\n - EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_FAILED: Child Workflow execution cannot be started/triggered\nUsually due to a child Workflow ID collision\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_STARTED: Child Workflow execution has successfully started/triggered\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_COMPLETED: Child Workflow execution has successfully completed\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_FAILED: Child Workflow execution has unsuccessfully completed\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_CANCELED: Child Workflow execution has been cancelled\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TIMED_OUT: Child Workflow execution has timed out by the Temporal Server\n - EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TERMINATED: Child Workflow execution has been terminated\n - EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED: Temporal Server will try to Signal the targeted Workflow\nContains the Signal name, as well as a Signal payload\n - EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_FAILED: Temporal Server cannot Signal the targeted Workflow\nUsually because the Workflow could not be found\n - EVENT_TYPE_EXTERNAL_WORKFLOW_EXECUTION_SIGNALED: Temporal Server has successfully Signaled the targeted Workflow\n - EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES: Workflow search attributes should be updated and synchronized with the visibility store\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ADMITTED: An update was admitted. Note that not all admitted updates result in this\nevent. See UpdateAdmittedEventOrigin for situations in which this event\nis created.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_ACCEPTED: An update was accepted (i.e. passed validation, perhaps because no validator was defined)\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_REJECTED: This event is never written to history.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UPDATE_COMPLETED: An update completed\n - EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED_EXTERNALLY: Some property or properties of the workflow as a whole have changed by non-workflow code.\nThe distinction of external vs. command-based modification is important so the SDK can\nmaintain determinism when using the command-based approach.\n - EVENT_TYPE_ACTIVITY_PROPERTIES_MODIFIED_EXTERNALLY: Some property or properties of an already-scheduled activity have changed by non-workflow code.\nThe distinction of external vs. command-based modification is important so the SDK can\nmaintain determinism when using the command-based approach.\n - EVENT_TYPE_WORKFLOW_PROPERTIES_MODIFIED: Workflow properties modified by user workflow code\n - EVENT_TYPE_NEXUS_OPERATION_SCHEDULED: A Nexus operation was scheduled using a ScheduleNexusOperation command.\n - EVENT_TYPE_NEXUS_OPERATION_STARTED: An asynchronous Nexus operation was started by a Nexus handler.\n - EVENT_TYPE_NEXUS_OPERATION_COMPLETED: A Nexus operation completed successfully.\n - EVENT_TYPE_NEXUS_OPERATION_FAILED: A Nexus operation failed.\n - EVENT_TYPE_NEXUS_OPERATION_CANCELED: A Nexus operation completed as canceled.\n - EVENT_TYPE_NEXUS_OPERATION_TIMED_OUT: A Nexus operation timed out.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUESTED: A Nexus operation was requested to be canceled using a RequestCancelNexusOperation command.\n - EVENT_TYPE_WORKFLOW_EXECUTION_OPTIONS_UPDATED: Workflow execution options updated by user.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_COMPLETED: A cancellation request for a Nexus operation was successfully delivered to the Nexus handler.\n - EVENT_TYPE_NEXUS_OPERATION_CANCEL_REQUEST_FAILED: A cancellation request for a Nexus operation resulted in an error.\n - EVENT_TYPE_WORKFLOW_EXECUTION_PAUSED: An event that indicates that the workflow execution has been paused.\n - EVENT_TYPE_WORKFLOW_EXECUTION_UNPAUSED: An event that indicates that the previously paused workflow execution has been unpaused.\n - EVENT_TYPE_WORKFLOW_EXECUTION_TIME_SKIPPING_TRANSITIONED: Experimental.\nAn event that indicates time skipping advanced time or was disabled automatically after a bound was reached.", "title": "Whenever this list of events is changed do change the function shouldBufferEvent in mutableStateBuilder.go to make sure to do the correct event ordering" }, "v1Execution": { @@ -16325,7 +16329,8 @@ "type": "string", "description": "Fast-forward the current execution by this duration ahead of the current execution time; required field.\nThe duration yields a target time (current execution time + duration), surfaced as `target_time` in\nTimeSkippingFastForwardInfo. Once virtual time reaches that target, the fast-forward completes, time\nskipping is disabled, and no further time is skipped. Time skipping can be resumed either\nby updating the TimeSkippingConfig with a new FastForwardConfig, or by clearing the FastForwardConfig\nto skip through to the end of the execution.\n\nIf this duration exceeds the remaining execution timeout, time will not pass beyond the end\nof the execution, and the fast-forward won't have a chance to complete." } - } + }, + "description": "Controls a time-skipping fast-forward for an execution.\nExperimental. Might change in the future." }, "v1FastForwardPollingResult": { "type": "string", @@ -16336,7 +16341,7 @@ "FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED" ], "default": "FAST_FORWARD_POLLING_RESULT_UNSPECIFIED", - "description": "FastForwardPollingResult is the result of polling and waiting for a fast-forward to complete\non a time-skipping execution.\nFAST_FORWARD_POLLING_RESULT_POLL_TIMEOUT and FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_COMPLETED\nare the normal poll outcomes; FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED means the\nfast-forward can no longer complete.\n\n - FAST_FORWARD_POLLING_RESULT_UNSPECIFIED: Never returned; guards against an unset result.\n - FAST_FORWARD_POLLING_RESULT_POLL_TIMEOUT: The poll timed out server-side before the fast-forward completed. The caller may poll again.\n - FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_COMPLETED: The fast-forward identified by the request's `fast_forward_id` reached its target time and completed.\n - FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED: The fast-forward can no longer complete, which usually indicates improper usage of\nfast-forward on the client side. Possible reasons: the `fast_forward_id` does not match\nthe execution's current fast-forward, the execution ended before the fast-forward\ncompleted, the fast-forward config was updated while the poll was in flight, etc.\nSee `failed_reason` in the response for the specific cause." + "description": "FastForwardPollingResult is the result of polling and waiting for a fast-forward to complete\non a time-skipping execution.\nFAST_FORWARD_POLLING_RESULT_POLL_TIMEOUT and FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_COMPLETED\nare the normal poll outcomes; FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED means the\nfast-forward can no longer complete.\nExperimental. Might change in the future.\n\n - FAST_FORWARD_POLLING_RESULT_UNSPECIFIED: Never returned; guards against an unset result.\n - FAST_FORWARD_POLLING_RESULT_POLL_TIMEOUT: The poll timed out server-side before the fast-forward completed. The caller may poll again.\n - FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_COMPLETED: The fast-forward identified by the request's `fast_forward_id` reached its target time and completed.\n - FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED: The fast-forward can no longer complete, which usually indicates improper usage of\nfast-forward on the client side. Possible reasons: the `fast_forward_id` does not match\nthe execution's current fast-forward, the execution ended before the fast-forward\ncompleted, the fast-forward config was updated while the poll was in flight, etc.\nSee `failed_reason` in the response for the specific cause." }, "v1FetchWorkerConfigResponse": { "type": "object", @@ -16844,7 +16849,8 @@ "$ref": "#/definitions/v1WorkflowExecutionUnpausedEventAttributes" }, "workflowExecutionTimeSkippingTransitionedEventAttributes": { - "$ref": "#/definitions/v1WorkflowExecutionTimeSkippingTransitionedEventAttributes" + "$ref": "#/definitions/v1WorkflowExecutionTimeSkippingTransitionedEventAttributes", + "description": "Experimental." } }, "description": "History events are the method by which Temporal SDKs advance (or recreate) workflow state.\nSee the `EventType` enum for more info about what each event is for." @@ -18635,7 +18641,8 @@ "$ref": "#/definitions/v1TimeSkippingFastForwardInfo", "description": "The execution's current fast-forward, if any." } - } + }, + "description": "Result of polling a workflow execution's time-skipping fast-forward.\nExperimental. Might change in the future." }, "v1PollWorkflowTaskQueueResponse": { "type": "object", @@ -19624,7 +19631,7 @@ }, "timeSkippingInfo": { "$ref": "#/definitions/v1TimeSkippingInfo", - "description": "Information about time skipping for this schedule.\nIf the schedule has never enabled time skipping, this will be unset." + "description": "Experimental.\nInformation about time skipping for this schedule.\nIf the schedule has never enabled time skipping, this will be unset." } } }, @@ -19725,7 +19732,7 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "If set, applies the specified time-skipping configuration to this schedule,\nreplacing any existing time-skipping configuration." + "description": "Experimental.\nIf set, applies the specified time-skipping configuration to this schedule,\nreplacing any existing time-skipping configuration." } } }, @@ -20200,11 +20207,11 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "The propagated time-skipping configuration for the child workflow." + "description": "Experimental.\nThe propagated time-skipping configuration for the child workflow." }, "timeSkippingStatePropagation": { "$ref": "#/definitions/v1TimeSkippingStatePropagation", - "description": "The time-skipping state propagated from the parent workflow. This can be nil if no time skipping\nhas occurred or there is no previous run." + "description": "Experimental.\nThe time-skipping state propagated from the parent workflow. This can be nil if no time skipping\nhas occurred or there is no previous run." }, "versioningOverride": { "$ref": "#/definitions/v1VersioningOverride", @@ -20621,7 +20628,7 @@ "description": "The maximum number of skips allowed every time this field is updated. It protects the execution from\nsituations like unlimited retries when backoff is skipped.\n\nEvery time the execution skips time, the skip count is incremented by one, and when it reaches\nmax_session_skip_count, time skipping stops. Whenever this config field is updated, the accumulated\nskip count is cleared, marking the start of a new session.\nFor an execution with a chain of runs (retry, cron, continue-as-new), the count is accumulated\nacross all runs within the same session.\n\nIf this field is not set, the server applies a large default value (e.g. 100). The default can\nbe changed through dynamic config, and is overridden by this field when set." } }, - "description": "The configuration for time skipping of an execution.\nWhen time skipping is enabled, virtual time advances automatically whenever there is no in-flight work.\nOptions like fast_forward, disable_propagation, and max_session_skip_count are provided for granular\ncontrol of the execution's time skipping behavior. See each field's comment for a detailed explanation.\n\nAn example of workflows with time skipping:\nFor workflows, an execution is a chain of runs including retries, cron, and continue-as-new.\nIn-flight work includes activities, child workflows, Nexus operations, signal/cancel external workflow operations, etc.\nUser timers are not classified as in-flight work and will be skipped over; the virtual clock may also skip to the\ntime point of the registered fast-forward when there is no in-flight work.\nWhenever time is skipped, the skip count is incremented by one; max_session_skip_count bounds the number of skips allowed within a single time-skipping session.\nFor child workflows, by default, if the parent execution is skipping time, the child execution will also skip time,\nbut a parent's fast_forward won't affect its child's execution. A flag is provided to disable propagation of the\n\"enabled\" flag to child workflows; regardless of that flag, a child workflow inherits the virtual time from the\nparent execution as its start time." + "description": "The configuration for time skipping of an execution.\nWhen time skipping is enabled, virtual time advances automatically whenever there is no in-flight work.\nOptions like fast_forward, disable_propagation, and max_session_skip_count are provided for granular\ncontrol of the execution's time skipping behavior. See each field's comment for a detailed explanation.\n\nAn example of workflows with time skipping:\nFor workflows, an execution is a chain of runs including retries, cron, and continue-as-new.\nIn-flight work includes activities, child workflows, Nexus operations, signal/cancel external workflow operations, etc.\nUser timers are not classified as in-flight work and will be skipped over; the virtual clock may also skip to the\ntime point of the registered fast-forward when there is no in-flight work.\nWhenever time is skipped, the skip count is incremented by one; max_session_skip_count bounds the number of skips allowed within a single time-skipping session.\nFor child workflows, by default, if the parent execution is skipping time, the child execution will also skip time,\nbut a parent's fast_forward won't affect its child's execution. A flag is provided to disable propagation of the\n\"enabled\" flag to child workflows; regardless of that flag, a child workflow inherits the virtual time from the\nparent execution as its start time.\nExperimental. Might change in the future." }, "v1TimeSkippingFastForwardInfo": { "type": "object", @@ -20644,7 +20651,7 @@ "description": "True once `target_time` has been reached." } }, - "description": "TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution." + "description": "TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution.\nExperimental. Might change in the future." }, "v1TimeSkippingInfo": { "type": "object", @@ -20668,7 +20675,7 @@ "description": "The number of skips accumulated in the current session, bounded by `max_session_skip_count`.\nA new session begins — and this resets to 0 — each time `max_session_skip_count` is updated." } }, - "description": "Describes the current time-skipping state of a workflow execution." + "description": "Describes the current time-skipping state of a workflow execution.\nExperimental. Might change in the future." }, "v1TimeSkippingStatePropagation": { "type": "object", @@ -20688,7 +20695,7 @@ "description": "The initial skip count. It only propagates across a chain of runs within the same execution." } }, - "description": "The time-skipping state that needs to be propagated from one execution to another, or through a chain of runs\nwithin the same execution." + "description": "The time-skipping state that needs to be propagated from one execution to another, or through a chain of runs\nwithin the same execution.\nExperimental. Might change in the future." }, "v1TimeoutFailureInfo": { "type": "object", @@ -20989,7 +20996,7 @@ "updateTime": { "type": "string", "format": "date-time", - "description": "The Workflow Execution time when the options were updated. When time skipping is\nenabled, this is the workflow's virtual time rather than wall-clock time.\n\nThis timestamp cannot be used for time-skipping fast-forward verification,\nuse `fast_forward_id` in `PollWorkflowExecutionTimeSkippingRequest` instead." + "description": "Experimental.\nThe Workflow Execution time when the options were updated. When time skipping is\nenabled, this is the workflow's virtual time rather than wall-clock time.\n\nThis timestamp cannot be used for time-skipping fast-forward verification,\nuse `fast_forward_id` in `PollWorkflowExecutionTimeSkippingRequest` instead." } } }, @@ -21869,7 +21876,7 @@ }, "timeSkippingInfo": { "$ref": "#/definitions/v1TimeSkippingInfo", - "description": "Information about time skipping of the workflow execution.\nIf the execution has never enabled time skipping, it will be nil." + "description": "Experimental.\nInformation about time skipping of the workflow execution.\nIf the execution has never enabled time skipping, it will be nil." }, "propagatedNexusSerializationContext": { "$ref": "#/definitions/v1PropagatedSerializationContext", @@ -22015,7 +22022,7 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "The time-skipping configuration for this workflow execution.\nWhen `fast_forward` is set, time will be fast-forwarded to a future point relative\nto the current workflow timestamp. Each call takes effect, even if\n`fast_forward` is set to the same duration, since the target time is recalculated\nfrom the current timestamp on every call.\n\nThis field must be updated as a whole; updating individual sub-fields is not supported.\nWhen setting the update mask in `UpdateWorkflowExecutionOptionsRequest`, \n`BatchOperationUpdateWorkflowExecutionOptions`, etc., use a mask that covers the entire field." + "description": "Experimental.\nThe time-skipping configuration for this workflow execution.\nWhen `fast_forward` is set, time will be fast-forwarded to a future point relative\nto the current workflow timestamp. Each call takes effect, even if\n`fast_forward` is set to the same duration, since the target time is recalculated\nfrom the current timestamp on every call.\n\nThis field must be updated as a whole; updating individual sub-fields is not supported.\nWhen setting the update mask in `UpdateWorkflowExecutionOptionsRequest`, \n`BatchOperationUpdateWorkflowExecutionOptions`, etc., use a mask that covers the entire field." } } }, @@ -22052,11 +22059,11 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "TimeSkippingConfig override upserted in this event. Represents the full config." + "description": "Experimental.\nTimeSkippingConfig override upserted in this event. Represents the full config." }, "timeSkippingConfigUpdated": { "type": "boolean", - "description": "Indicates the time skipping config was updated by the recent call to update\nworkflow execution options." + "description": "Experimental.\nIndicates the time skipping config was updated by the recent call to update\nworkflow execution options." }, "workflowUpdateOptions": { "type": "array", @@ -22296,11 +22303,11 @@ }, "timeSkippingConfig": { "$ref": "#/definitions/v1TimeSkippingConfig", - "description": "Initial time-skipping configuration for this workflow execution, recorded at start time.\nThis may have been set explicitly via the start workflow request, or propagated from a\nparent/previous execution.\n\nThe configuration may be updated after start via UpdateWorkflowExecutionOptions, which\nwill be reflected in the WorkflowExecutionOptionsUpdatedEvent." + "description": "Experimental.\nInitial time-skipping configuration for this workflow execution, recorded at start time.\nThis may have been set explicitly via the start workflow request, or propagated from a\nparent/previous execution.\n\nThe configuration may be updated after start via UpdateWorkflowExecutionOptions, which\nwill be reflected in the WorkflowExecutionOptionsUpdatedEvent." }, "timeSkippingStatePropagation": { "$ref": "#/definitions/v1TimeSkippingStatePropagation", - "description": "The time-skipping state propagated from a previous run of this workflow. This can be nil\nif no time skipping has occurred or there is no previous run." + "description": "Experimental.\nThe time-skipping state propagated from a previous run of this workflow. This can be nil\nif no time skipping has occurred or there is no previous run." }, "propagatedNexusSerializationContext": { "$ref": "#/definitions/v1PropagatedSerializationContext", @@ -22359,7 +22366,7 @@ "description": "The wall-clock time when the time-skipping state changed event was generated." } }, - "description": "Attributes for an event indicating that time skipping state changed for a workflow execution:\neither time was advanced, or time skipping was stopped automatically due to the fast_forward completing.\nThe worker_may_ignore field in HistoryEvent should always be set true for this event." + "description": "Attributes for an event indicating that time skipping state changed for a workflow execution:\neither time was advanced, or time skipping was stopped automatically due to the fast_forward completing.\nThe worker_may_ignore field in HistoryEvent should always be set true for this event.\nExperimental. Might change in the future." }, "v1WorkflowExecutionTimedOutEventAttributes": { "type": "object", diff --git a/openapi/openapiv3.yaml b/openapi/openapiv3.yaml index 72df3d718..3e81fcc85 100644 --- a/openapi/openapiv3.yaml +++ b/openapi/openapiv3.yaml @@ -4559,6 +4559,10 @@ paths: get: tags: - WorkflowService + description: |- + PollWorkflowExecutionTimeSkipping waits for a fast-forward outcome for a workflow execution. + + Experimental. Might change in the future. operationId: PollWorkflowExecutionTimeSkipping parameters: - name: namespace @@ -9582,6 +9586,10 @@ paths: get: tags: - WorkflowService + description: |- + PollWorkflowExecutionTimeSkipping waits for a fast-forward outcome for a workflow execution. + + Experimental. Might change in the future. operationId: PollWorkflowExecutionTimeSkipping parameters: - name: namespace @@ -12602,6 +12610,9 @@ components: If this duration exceeds the remaining execution timeout, time will not pass beyond the end of the execution, and the fast-forward won't have a chance to complete. + description: |- + Controls a time-skipping fast-forward for an execution. + Experimental. Might change in the future. FetchWorkerConfigRequest: type: object properties: @@ -13110,7 +13121,9 @@ components: workflowExecutionUnpausedEventAttributes: $ref: '#/components/schemas/WorkflowExecutionUnpausedEventAttributes' workflowExecutionTimeSkippingTransitionedEventAttributes: - $ref: '#/components/schemas/WorkflowExecutionTimeSkippingTransitionedEventAttributes' + allOf: + - $ref: '#/components/schemas/WorkflowExecutionTimeSkippingTransitionedEventAttributes' + description: Experimental. description: |- History events are the method by which Temporal SDKs advance (or recreate) workflow state. See the `EventType` enum for more info about what each event is for. @@ -14921,6 +14934,9 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingFastForwardInfo' description: The execution's current fast-forward, if any. + description: |- + Result of polling a workflow execution's time-skipping fast-forward. + Experimental. Might change in the future. PollWorkflowTaskQueueResponse: type: object properties: @@ -16486,7 +16502,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingInfo' description: |- - Information about time skipping for this schedule. + Experimental. + Information about time skipping for this schedule. If the schedule has never enabled time skipping, this will be unset. ScheduleListEntry: type: object @@ -16563,7 +16580,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' description: |- - If set, applies the specified time-skipping configuration to this schedule, + Experimental. + If set, applies the specified time-skipping configuration to this schedule, replacing any existing time-skipping configuration. SchedulePolicies: type: object @@ -17173,7 +17191,9 @@ components: timeSkippingConfig: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' - description: Time-skipping configuration. If not set, time skipping is disabled. + description: |- + Experimental. + Time-skipping configuration. If not set, time skipping is disabled. SignalWithStartWorkflowExecutionResponse: type: object properties: @@ -17575,12 +17595,15 @@ components: timeSkippingConfig: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' - description: The propagated time-skipping configuration for the child workflow. + description: |- + Experimental. + The propagated time-skipping configuration for the child workflow. timeSkippingStatePropagation: allOf: - $ref: '#/components/schemas/TimeSkippingStatePropagation' description: |- - The time-skipping state propagated from the parent workflow. This can be nil if no time skipping + Experimental. + The time-skipping state propagated from the parent workflow. This can be nil if no time skipping has occurred or there is no previous run. versioningOverride: allOf: @@ -17889,7 +17912,9 @@ components: timeSkippingConfig: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' - description: Time-skipping configuration. If not set, time skipping is disabled. + description: |- + Experimental. + Time-skipping configuration. If not set, time skipping is disabled. propagatedNexusSerializationContext: allOf: - $ref: '#/components/schemas/PropagatedSerializationContext' @@ -17898,7 +17923,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingStatePropagation' description: |- - Time-skipping state propagated by the execution that started this workflow. + Experimental. + Time-skipping state propagated by the execution that started this workflow. This field is intended for use by the Temporal server, for example when a schedule starts a workflow, and is not intended to be set by external clients. StartWorkflowExecutionResponse: @@ -18386,6 +18412,7 @@ components: but a parent's fast_forward won't affect its child's execution. A flag is provided to disable propagation of the "enabled" flag to child workflows; regardless of that flag, a child workflow inherits the virtual time from the parent execution as its start time. + Experimental. Might change in the future. TimeSkippingFastForwardInfo: type: object properties: @@ -18403,7 +18430,9 @@ components: hasCompleted: type: boolean description: True once `target_time` has been reached. - description: TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution. + description: |- + TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution. + Experimental. Might change in the future. TimeSkippingInfo: type: object properties: @@ -18431,7 +18460,9 @@ components: The number of skips accumulated in the current session, bounded by `max_session_skip_count`. A new session begins — and this resets to 0 — each time `max_session_skip_count` is updated. format: int32 - description: Describes the current time-skipping state of a workflow execution. + description: |- + Describes the current time-skipping state of a workflow execution. + Experimental. Might change in the future. TimeSkippingStatePropagation: type: object properties: @@ -18452,6 +18483,7 @@ components: description: |- The time-skipping state that needs to be propagated from one execution to another, or through a chain of runs within the same execution. + Experimental. Might change in the future. TimeoutFailureInfo: type: object properties: @@ -19119,7 +19151,8 @@ components: updateTime: type: string description: |- - The Workflow Execution time when the options were updated. When time skipping is + Experimental. + The Workflow Execution time when the options were updated. When time skipping is enabled, this is the workflow's virtual time rather than wall-clock time. This timestamp cannot be used for time-skipping fast-forward verification, @@ -20392,7 +20425,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingInfo' description: |- - Information about time skipping of the workflow execution. + Experimental. + Information about time skipping of the workflow execution. If the execution has never enabled time skipping, it will be nil. propagatedNexusSerializationContext: allOf: @@ -20566,7 +20600,7 @@ components: timeSkippingConfig: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' - description: "The time-skipping configuration for this workflow execution.\n When `fast_forward` is set, time will be fast-forwarded to a future point relative\n to the current workflow timestamp. Each call takes effect, even if\n `fast_forward` is set to the same duration, since the target time is recalculated\n from the current timestamp on every call.\n\n This field must be updated as a whole; updating individual sub-fields is not supported.\n When setting the update mask in `UpdateWorkflowExecutionOptionsRequest`, \n `BatchOperationUpdateWorkflowExecutionOptions`, etc., use a mask that covers the entire field." + description: "Experimental.\n The time-skipping configuration for this workflow execution.\n When `fast_forward` is set, time will be fast-forwarded to a future point relative\n to the current workflow timestamp. Each call takes effect, even if\n `fast_forward` is set to the same duration, since the target time is recalculated\n from the current timestamp on every call.\n\n This field must be updated as a whole; updating individual sub-fields is not supported.\n When setting the update mask in `UpdateWorkflowExecutionOptionsRequest`, \n `BatchOperationUpdateWorkflowExecutionOptions`, etc., use a mask that covers the entire field." WorkflowExecutionOptionsUpdatedEventAttributes: type: object properties: @@ -20601,11 +20635,14 @@ components: timeSkippingConfig: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' - description: TimeSkippingConfig override upserted in this event. Represents the full config. + description: |- + Experimental. + TimeSkippingConfig override upserted in this event. Represents the full config. timeSkippingConfigUpdated: type: boolean description: |- - Indicates the time skipping config was updated by the recent call to update + Experimental. + Indicates the time skipping config was updated by the recent call to update workflow execution options. workflowUpdateOptions: type: array @@ -20930,7 +20967,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingConfig' description: |- - Initial time-skipping configuration for this workflow execution, recorded at start time. + Experimental. + Initial time-skipping configuration for this workflow execution, recorded at start time. This may have been set explicitly via the start workflow request, or propagated from a parent/previous execution. @@ -20940,7 +20978,8 @@ components: allOf: - $ref: '#/components/schemas/TimeSkippingStatePropagation' description: |- - The time-skipping state propagated from a previous run of this workflow. This can be nil + Experimental. + The time-skipping state propagated from a previous run of this workflow. This can be nil if no time skipping has occurred or there is no previous run. propagatedNexusSerializationContext: allOf: @@ -20979,6 +21018,7 @@ components: Attributes for an event indicating that time skipping state changed for a workflow execution: either time was advanced, or time skipping was stopped automatically due to the fast_forward completing. The worker_may_ignore field in HistoryEvent should always be set true for this event. + Experimental. Might change in the future. WorkflowExecutionTimedOutEventAttributes: type: object properties: diff --git a/temporal/api/common/v1/message.proto b/temporal/api/common/v1/message.proto index a0a572594..cc23e2faf 100644 --- a/temporal/api/common/v1/message.proto +++ b/temporal/api/common/v1/message.proto @@ -480,6 +480,7 @@ message OnConflictOptions { // but a parent's fast_forward won't affect its child's execution. A flag is provided to disable propagation of the // "enabled" flag to child workflows; regardless of that flag, a child workflow inherits the virtual time from the // parent execution as its start time. +// Experimental. Might change in the future. message TimeSkippingConfig { // Enables or disables time skipping for this workflow execution. @@ -507,6 +508,8 @@ message TimeSkippingConfig { int32 max_session_skip_count = 4; } +// Controls a time-skipping fast-forward for an execution. +// Experimental. Might change in the future. message FastForwardConfig { // A client-supplied ID, required field, set alongside `duration`. It is used to poll for // fast-forward completion via PollWorkflowExecutionTimeSkipping. @@ -527,6 +530,7 @@ message FastForwardConfig { // The time-skipping state that needs to be propagated from one execution to another, or through a chain of runs // within the same execution. +// Experimental. Might change in the future. message TimeSkippingStatePropagation { // The time skipped by the previous run. It is propagated both to executions started by the @@ -542,6 +546,7 @@ message TimeSkippingStatePropagation { // Describes the current time-skipping state of a workflow execution. +// Experimental. Might change in the future. message TimeSkippingInfo { // Current virtual time of the execution. If the execution hasn't skipped // any time yet, it will be the same as wall clock time. @@ -563,6 +568,7 @@ message TimeSkippingInfo { // TimeSkippingFastForwardInfo describes the current time-skipping fast-forward on an execution. +// Experimental. Might change in the future. message TimeSkippingFastForwardInfo { // The client-supplied `fast_forward` duration. google.protobuf.Duration fast_forward_duration = 1; diff --git a/temporal/api/enums/v1/event_type.proto b/temporal/api/enums/v1/event_type.proto index b879f51e8..b1f2ac2e6 100644 --- a/temporal/api/enums/v1/event_type.proto +++ b/temporal/api/enums/v1/event_type.proto @@ -173,6 +173,7 @@ enum EventType { EVENT_TYPE_WORKFLOW_EXECUTION_PAUSED = 58; // An event that indicates that the previously paused workflow execution has been unpaused. EVENT_TYPE_WORKFLOW_EXECUTION_UNPAUSED = 59; + // Experimental. // An event that indicates time skipping advanced time or was disabled automatically after a bound was reached. EVENT_TYPE_WORKFLOW_EXECUTION_TIME_SKIPPING_TRANSITIONED = 60; } diff --git a/temporal/api/enums/v1/time_skipping.proto b/temporal/api/enums/v1/time_skipping.proto index 7f3c2d9f4..90d95cea8 100644 --- a/temporal/api/enums/v1/time_skipping.proto +++ b/temporal/api/enums/v1/time_skipping.proto @@ -15,6 +15,7 @@ option csharp_namespace = "Temporalio.Api.Enums.V1"; // FAST_FORWARD_POLLING_RESULT_POLL_TIMEOUT and FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_COMPLETED // are the normal poll outcomes; FAST_FORWARD_POLLING_RESULT_FAST_FORWARD_FAILED means the // fast-forward can no longer complete. +// Experimental. Might change in the future. enum FastForwardPollingResult { // Never returned; guards against an unset result. FAST_FORWARD_POLLING_RESULT_UNSPECIFIED = 0; diff --git a/temporal/api/history/v1/message.proto b/temporal/api/history/v1/message.proto index 1c6efd305..aeeb334f2 100644 --- a/temporal/api/history/v1/message.proto +++ b/temporal/api/history/v1/message.proto @@ -199,6 +199,7 @@ message WorkflowExecutionStartedEventAttributes { // Should not be read or interpreted by SDKs. DeclinedTargetVersionUpgrade declined_target_version_upgrade = 40; + // Experimental. // Initial time-skipping configuration for this workflow execution, recorded at start time. // This may have been set explicitly via the start workflow request, or propagated from a // parent/previous execution. @@ -210,6 +211,7 @@ message WorkflowExecutionStartedEventAttributes { reserved 42; reserved "initial_skipped_duration"; + // Experimental. // The time-skipping state propagated from a previous run of this workflow. This can be nil // if no time skipping has occurred or there is no previous run. temporal.api.common.v1.TimeSkippingStatePropagation time_skipping_state_propagation = 43; @@ -786,12 +788,14 @@ message StartChildWorkflowExecutionInitiatedEventAttributes { // Priority metadata temporal.api.common.v1.Priority priority = 20; + // Experimental. // The propagated time-skipping configuration for the child workflow. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 21; reserved 22; reserved "initial_skipped_duration"; + // Experimental. // The time-skipping state propagated from the parent workflow. This can be nil if no time skipping // has occurred or there is no previous run. temporal.api.common.v1.TimeSkippingStatePropagation time_skipping_state_propagation = 23; @@ -925,9 +929,11 @@ message WorkflowExecutionOptionsUpdatedEventAttributes { // Ignored if nil. temporal.api.common.v1.Priority priority = 6; + // Experimental. // TimeSkippingConfig override upserted in this event. Represents the full config. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 7; + // Experimental. // Indicates the time skipping config was updated by the recent call to update // workflow execution options. bool time_skipping_config_updated = 9; @@ -1029,6 +1035,7 @@ message WorkflowExecutionUnpausedEventAttributes { // Attributes for an event indicating that time skipping state changed for a workflow execution: // either time was advanced, or time skipping was stopped automatically due to the fast_forward completing. // The worker_may_ignore field in HistoryEvent should always be set true for this event. +// Experimental. Might change in the future. message WorkflowExecutionTimeSkippingTransitionedEventAttributes { // The virtual time point that time skipping advanced to. google.protobuf.Timestamp target_time = 1; @@ -1280,6 +1287,7 @@ message HistoryEvent { NexusOperationCancelRequestFailedEventAttributes nexus_operation_cancel_request_failed_event_attributes = 62; WorkflowExecutionPausedEventAttributes workflow_execution_paused_event_attributes = 63; WorkflowExecutionUnpausedEventAttributes workflow_execution_unpaused_event_attributes = 64; + // Experimental. WorkflowExecutionTimeSkippingTransitionedEventAttributes workflow_execution_time_skipping_transitioned_event_attributes = 65; } } diff --git a/temporal/api/schedule/v1/message.proto b/temporal/api/schedule/v1/message.proto index 45d5cb1c8..914764ede 100644 --- a/temporal/api/schedule/v1/message.proto +++ b/temporal/api/schedule/v1/message.proto @@ -311,6 +311,7 @@ message SchedulePatch { string pause = 3; string unpause = 4; + // Experimental. // If set, applies the specified time-skipping configuration to this schedule, // replacing any existing time-skipping configuration. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 5; @@ -357,6 +358,7 @@ message ScheduleInfo { // Size of the schedule's internal state (including payloads) in bytes. int64 state_size_bytes = 12; + // Experimental. // Information about time skipping for this schedule. // If the schedule has never enabled time skipping, this will be unset. temporal.api.common.v1.TimeSkippingInfo time_skipping_info = 13; diff --git a/temporal/api/workflow/v1/message.proto b/temporal/api/workflow/v1/message.proto index 9c013b1dc..86224a4b1 100644 --- a/temporal/api/workflow/v1/message.proto +++ b/temporal/api/workflow/v1/message.proto @@ -136,6 +136,7 @@ message WorkflowExecutionExtendedInfo { // Information about the workflow execution pause operation. WorkflowExecutionPauseInfo pause_info = 8; + // Experimental. // Information about time skipping of the workflow execution. // If the execution has never enabled time skipping, it will be nil. temporal.api.common.v1.TimeSkippingInfo time_skipping_info = 9; @@ -597,6 +598,7 @@ message WorkflowExecutionOptions { // If set, overrides the workflow's priority sent by the SDK. temporal.api.common.v1.Priority priority = 2; + // Experimental. // The time-skipping configuration for this workflow execution. // When `fast_forward` is set, time will be fast-forwarded to a future point relative // to the current workflow timestamp. Each call takes effect, even if diff --git a/temporal/api/workflowservice/v1/request_response.proto b/temporal/api/workflowservice/v1/request_response.proto index 2ad815a5e..d4b166bd0 100644 --- a/temporal/api/workflowservice/v1/request_response.proto +++ b/temporal/api/workflowservice/v1/request_response.proto @@ -217,12 +217,14 @@ message StartWorkflowExecutionRequest { // Deployment Options of the worker who will process the eager task. Passed when `request_eager_execution=true`. temporal.api.deployment.v1.WorkerDeploymentOptions eager_worker_deployment_options = 28; + // Experimental. // Time-skipping configuration. If not set, time skipping is disabled. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 29; // Serialization context propagated from the Nexus caller that started this workflow. temporal.api.nexus.v1.PropagatedSerializationContext propagated_nexus_serialization_context = 30; + // Experimental. // Time-skipping state propagated by the execution that started this workflow. // This field is intended for use by the Temporal server, for example when a schedule // starts a workflow, and is not intended to be set by external clients. @@ -956,6 +958,7 @@ message SignalWithStartWorkflowExecutionRequest { temporal.api.workflow.v1.VersioningOverride versioning_override = 25; // Priority metadata temporal.api.common.v1.Priority priority = 26; + // Experimental. // Time-skipping configuration. If not set, time skipping is disabled. temporal.api.common.v1.TimeSkippingConfig time_skipping_config = 27; } @@ -2488,6 +2491,7 @@ message UpdateWorkflowExecutionOptionsResponse { // Workflow Execution options after update. temporal.api.workflow.v1.WorkflowExecutionOptions workflow_execution_options = 1; + // Experimental. // The Workflow Execution time when the options were updated. When time skipping is // enabled, this is the workflow's virtual time rather than wall-clock time. // @@ -3715,6 +3719,7 @@ message DeleteNexusOperationExecutionResponse { // execution. Currently the only supported policy is waiting for completion of the fast-forward // identified by `fast_forward_id`; the poll also returns once anything else settles that outcome // (e.g. the execution ends or time skipping is disabled). +// Experimental. Might change in the future. message PollWorkflowExecutionTimeSkippingRequest { string namespace = 1; temporal.api.common.v1.WorkflowExecution workflow_execution = 2; @@ -3723,6 +3728,8 @@ message PollWorkflowExecutionTimeSkippingRequest { string fast_forward_id = 3; } +// Result of polling a workflow execution's time-skipping fast-forward. +// Experimental. Might change in the future. message PollWorkflowExecutionTimeSkippingResponse { // The outcome of the poll for the fast-forward identified by the request's `fast_forward_id`. temporal.api.enums.v1.FastForwardPollingResult fast_forward_polling_result = 1; diff --git a/temporal/api/workflowservice/v1/service.proto b/temporal/api/workflowservice/v1/service.proto index 34f6a73f6..a6d771fe0 100644 --- a/temporal/api/workflowservice/v1/service.proto +++ b/temporal/api/workflowservice/v1/service.proto @@ -2027,6 +2027,9 @@ service WorkflowService { // aip.dev/not-precedent: Nexus operation deletion not exposed to HTTP, users should use cancel or terminate. --) rpc DeleteNexusOperationExecution (DeleteNexusOperationExecutionRequest) returns (DeleteNexusOperationExecutionResponse) {} + // PollWorkflowExecutionTimeSkipping waits for a fast-forward outcome for a workflow execution. + // + // Experimental. Might change in the future. rpc PollWorkflowExecutionTimeSkipping (PollWorkflowExecutionTimeSkippingRequest) returns (PollWorkflowExecutionTimeSkippingResponse) { option (google.api.http) = { get: "/namespaces/{namespace}/workflows/{workflow_execution.workflow_id}/time-skipping/poll"