Skip to content

Commit 27b2dde

Browse files
Remove Continue-As-New and InternalHandlerTimeout; rename FlowExecutionID to FlowRunID (#1541)
1 parent f524398 commit 27b2dde

555 files changed

Lines changed: 5325 additions & 10232 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.cursor/rules/project-core.mdc‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,7 @@ still not describe downstream products.
173173
## User-Facing Concept Boundary
174174

175175
User-facing docs, examples and skills describe Dex concepts and guarantees only.
176-
Do not mention Continue-As-New except in the Flow options reference for the
177-
Continue-As-New threshold and the TriggerContinueAsNew Client API reference. Do
178-
not describe server-zd engine internals (apply, commands, partitions, history
176+
Do not describe server-zd engine internals (apply, commands, partitions, history
179177
mechanics) as part of the application model; state the Dex behavior instead.
180178
Deployment and operations guidance may name server-zd and its configuration.
181179

‎AGENTS.md‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,9 +322,7 @@ still not describe downstream products.
322322
### User-Facing Concept Boundary
323323

324324
User-facing docs, examples and skills describe Dex concepts and guarantees only.
325-
Do not mention Continue-As-New except in the Flow options reference for the
326-
Continue-As-New threshold and the TriggerContinueAsNew Client API reference. Do
327-
not describe server-zd engine internals (apply, commands, partitions, history
325+
Do not describe server-zd engine internals (apply, commands, partitions, history
328326
mechanics) as part of the application model; state the Dex behavior instead.
329327
Deployment and operations guidance may name server-zd and its configuration.
330328

‎CLAUDE.md‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,7 @@ still not describe downstream products.
245245
## User-Facing Concept Boundary
246246

247247
User-facing docs, examples and skills describe Dex concepts and guarantees only.
248-
Do not mention Continue-As-New except in the Flow options reference for the
249-
Continue-As-New threshold and the TriggerContinueAsNew Client API reference. Do
250-
not describe server-zd engine internals (apply, commands, partitions, history
248+
Do not describe server-zd engine internals (apply, commands, partitions, history
251249
mechanics) as part of the application model; state the Dex behavior instead.
252250
Deployment and operations guidance may name server-zd and its configuration.
253251

‎cli/README.md‎

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ dexcli health
213213
dexcli flow start order-123 --flow-type OrderFlow --start-step-type StartOrder --input '{"order":123}' --yes
214214
dexcli flow search --query 'ExecutionStatus = "Running"'
215215
dexcli flow inspect order-123 --all-history
216-
dexcli flow watch order-123 --follow-runs
216+
dexcli flow watch order-123
217217
```
218218

219219
JSON is the default and stable machine-readable output. Use `--output table`
@@ -643,7 +643,7 @@ dexcli flow state FLOW_ID [--run-id RUN_ID]
643643
dexcli flow history FLOW_ID [--run-id RUN_ID] [--start-event-id N]
644644
[--page-size N] [--page-token BASE64] [--all]
645645
dexcli flow inspect FLOW_ID [--run-id RUN_ID] [--all-history]
646-
dexcli flow watch FLOW_ID [--run-id RUN_ID] [--from-event-id N] [--follow-runs]
646+
dexcli flow watch FLOW_ID [--run-id RUN_ID] [--from-event-id N]
647647
dexcli flow stop FLOW_ID [--run-id RUN_ID]
648648
[--type cancel|terminate|fail] [--reason TEXT] --yes
649649
dexcli flow skip-timer FLOW_ID --step-type TYPE [--execution N]
@@ -657,10 +657,8 @@ dexcli flow time-travel FLOW_ID [--run-id RUN_ID]
657657
```
658658

659659
With the default JSON output, `watch` writes one object per line and exits when
660-
the run becomes terminal.
661-
`--follow-runs` keeps watching the Flow's current run when it changes. Stop and
662-
time travel operate on the current run by default; pass `--run-id` to target an
663-
exact run. All mutating Flow commands require `--yes`, including in
660+
the run becomes terminal. Stop and time travel operate on the current run by
661+
default; pass `--run-id` to target an exact run. All mutating Flow commands require `--yes`, including in
664662
non-interactive use.
665663
`--step-method` is required with `--type step-execution-id` and invalid for other types.
666664

‎cli/internal/command/api.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func fullMethodName(service protoreflect.ServiceDescriptor, method protoreflect.
240240
func isMutatingMethod(name protoreflect.Name) bool {
241241
switch name {
242242
case "StartFlow", "PublishToChannel", "WriteStream", "StopFlow", "SetAttributes", "SyncAttributeIndexes",
243-
"ResetFlow", "InvokeRPC", "SkipTimer", "UpdateFlowConfig", "TriggerContinueAsNew", "DeleteChannelMessage":
243+
"ResetFlow", "InvokeRPC", "SkipTimer", "UpdateFlowConfig", "DeleteChannelMessage":
244244
return true
245245
default:
246246
return false

‎cli/internal/command/command_integ_test.go‎

Lines changed: 29 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,28 @@ import (
3030
type testFlowService struct {
3131
dexpb.UnimplementedFlowServiceServer
3232

33-
mu sync.Mutex
34-
loadCalls int
35-
loadRequest *dexpb.LoadBlobsRequest
36-
startCalls int
37-
stopCalls int
38-
streamWriteCalls int
39-
skipTimerCalls int
40-
waitStepCalls int
41-
updateConfigCalls int
42-
continueAsNewCalls int
43-
startRequest *dexpb.StartFlowRequest
44-
stopRequest *dexpb.StopFlowRequest
45-
streamWriteRequest *dexpb.WriteStreamRequest
46-
waitRequest *dexpb.WaitForFlowRequest
47-
skipTimerRequest *dexpb.SkipTimerRequest
48-
waitStepRequest *dexpb.WaitForStepCompletionRequest
49-
updateConfigRequest *dexpb.UpdateFlowConfigRequest
50-
continueAsNewRequest *dexpb.TriggerContinueAsNewRequest
51-
timeTravelCalls int
52-
timeTravelRequest *dexpb.ResetFlowRequest
53-
waitStarted chan struct{}
54-
waitOnce sync.Once
55-
serverInfo *dexpb.ServerInfo
56-
serverInfoFailure error
33+
mu sync.Mutex
34+
loadCalls int
35+
loadRequest *dexpb.LoadBlobsRequest
36+
startCalls int
37+
stopCalls int
38+
streamWriteCalls int
39+
skipTimerCalls int
40+
waitStepCalls int
41+
updateConfigCalls int
42+
startRequest *dexpb.StartFlowRequest
43+
stopRequest *dexpb.StopFlowRequest
44+
streamWriteRequest *dexpb.WriteStreamRequest
45+
waitRequest *dexpb.WaitForFlowRequest
46+
skipTimerRequest *dexpb.SkipTimerRequest
47+
waitStepRequest *dexpb.WaitForStepCompletionRequest
48+
updateConfigRequest *dexpb.UpdateFlowConfigRequest
49+
timeTravelCalls int
50+
timeTravelRequest *dexpb.ResetFlowRequest
51+
waitStarted chan struct{}
52+
waitOnce sync.Once
53+
serverInfo *dexpb.ServerInfo
54+
serverInfoFailure error
5755
}
5856

5957
func (s *testFlowService) GetServerInfo(
@@ -188,17 +186,6 @@ func (s *testFlowService) UpdateFlowConfig(
188186
return &emptypb.Empty{}, nil
189187
}
190188

191-
func (s *testFlowService) TriggerContinueAsNew(
192-
_ context.Context,
193-
request *dexpb.TriggerContinueAsNewRequest,
194-
) (*emptypb.Empty, error) {
195-
s.mu.Lock()
196-
defer s.mu.Unlock()
197-
s.continueAsNewCalls++
198-
s.continueAsNewRequest = request
199-
return &emptypb.Empty{}, nil
200-
}
201-
202189
func (s *testFlowService) ResetFlow(
203190
_ context.Context,
204191
request *dexpb.ResetFlowRequest,
@@ -219,8 +206,8 @@ func (s *testFlowService) GetFlowSummary(
219206
flowStatus = dexpb.FlowStatus_FLOW_STATUS_COMPLETED
220207
}
221208
return &dexpb.GetFlowSummaryResponse{
222-
FlowExecutionId: &dexpb.FlowExecutionID{FlowId: request.GetFlowId(), RunId: "run-1"},
223-
FirstRunId: "run-1", FlowType: "OrderFlow", FlowStatus: flowStatus,
209+
FlowRunId: &dexpb.FlowRunID{FlowId: request.GetFlowId(), RunId: "run-1"},
210+
FirstRunId: "run-1", FlowType: "OrderFlow", FlowStatus: flowStatus,
224211
}, nil
225212
}
226213

@@ -403,7 +390,7 @@ func TestFlowClientOperationsMapSDKEquivalentRequests(t *testing.T) {
403390
startResult := executeTestCommand(t, nil,
404391
"flow", "start", "flow-1", "--flow-type", "OrderFlow", "--start-step-type", "StartOrder",
405392
"--input", `{"order":42}`, "--attributes", `[{"key":"status","value":"new","index":{"type":"keyword"},"sync":true}]`,
406-
"--config", `{"activeStepSearchMode":"all","continueAsNewThreshold":12,"stepDurability":"sync","offloadHistory":false}`,
393+
"--config", `{"activeStepSearchMode":"all","stepDurability":"sync","offloadHistory":false}`,
407394
"--retry-policy", `{"initialInterval":"1500ms","backoffCoefficient":2,"maximumInterval":"5s","maximumAttempts":3}`,
408395
"--step-options", `{"skipWaitFor":true}`, "--timeout-handler-options", `{"methodTimeoutSeconds":20,"loadChannelNames":["commands"]}`,
409396
"--flow-timeout", "90s", "--flow-timeout-policy", "handler",
@@ -424,8 +411,7 @@ func TestFlowClientOperationsMapSDKEquivalentRequests(t *testing.T) {
424411

425412
executeTestCommand(t, nil, "flow", "skip-timer", "flow-1", "--step-type", "WaitForPayment", "--execution", "2", "--condition-index", "3", "--yes", "--server", address)
426413
executeTestCommand(t, nil, "flow", "wait-step", "flow-1", "--step-type", "ShipOrder", "--execution", "2", "--request-timeout", "1500ms", "--server", address)
427-
executeTestCommand(t, nil, "flow", "update-config", "flow-1", "--config", `{"continueAsNewPageSizeInBytes":1024,"attributeStoreNames":[],"historyWindowEvents":5000,"deleteExpiredHistoryObjects":false}`, "--yes", "--server", address)
428-
executeTestCommand(t, nil, "flow", "trigger-continue-as-new", "flow-1", "--yes", "--server", address)
414+
executeTestCommand(t, nil, "flow", "update-config", "flow-1", "--config", `{"attributeStoreNames":[],"historyWindowEvents":5000,"deleteExpiredHistoryObjects":false}`, "--yes", "--server", address)
429415

430416
service.mu.Lock()
431417
defer service.mu.Unlock()
@@ -459,12 +445,10 @@ func TestFlowClientOperationsMapSDKEquivalentRequests(t *testing.T) {
459445
if service.waitStepRequest.GetStepExecutionNumber() != "2" || service.waitStepRequest.GetRequestTimeoutSeconds() != 2 || service.waitStepRequest.GetRequestId() == "" {
460446
t.Fatalf("unexpected wait-step request: %#v", service.waitStepRequest)
461447
}
462-
if service.updateConfigRequest.GetFlowConfig().GetContinueAsNewPageSizeInBytes() != 1024 || service.updateConfigRequest.GetFlowConfig().AttributeStoreNames == nil || len(service.updateConfigRequest.GetFlowConfig().GetAttributeStoreNames().GetNames()) != 0 || service.updateConfigRequest.GetFlowConfig().GetHistoryWindowEvents() != 5000 || service.updateConfigRequest.GetFlowConfig().DeleteExpiredHistoryObjects != nil || service.updateConfigRequest.GetFlowConfig().OffloadHistory != nil {
448+
if service.updateConfigRequest.GetFlowConfig().AttributeStoreNames == nil || len(service.updateConfigRequest.GetFlowConfig().GetAttributeStoreNames().GetNames()) != 0 || service.updateConfigRequest.GetFlowConfig().GetHistoryWindowEvents() != 5000 || service.updateConfigRequest.GetFlowConfig().DeleteExpiredHistoryObjects != nil || service.updateConfigRequest.GetFlowConfig().OffloadHistory != nil {
463449
t.Fatalf("unexpected update-config request: %#v", service.updateConfigRequest)
464450
}
465-
if service.continueAsNewRequest.GetFlowId() != "flow-1" {
466-
t.Fatalf("unexpected continue-as-new request: %#v", service.continueAsNewRequest)
467-
}
451+
468452
}
469453

470454
func TestFlowConfigRejectsWorkerTarget(t *testing.T) {
@@ -499,7 +483,6 @@ func TestFlowMutationsRequireConfirmation(t *testing.T) {
499483
{"flow", "start", "flow-1", "--flow-type", "OrderFlow", "--server", address},
500484
{"flow", "skip-timer", "flow-1", "--step-type", "Wait", "--condition-id", "timer", "--server", address},
501485
{"flow", "update-config", "flow-1", "--config", `{}`, "--server", address},
502-
{"flow", "trigger-continue-as-new", "flow-1", "--server", address},
503486
} {
504487
app := NewApp(bytes.NewReader(nil), &bytes.Buffer{}, &bytes.Buffer{})
505488
if err := app.Execute(context.Background(), args); err == nil || ExitCode(err) != 2 {
@@ -508,7 +491,7 @@ func TestFlowMutationsRequireConfirmation(t *testing.T) {
508491
}
509492
service.mu.Lock()
510493
defer service.mu.Unlock()
511-
if service.startCalls != 0 || service.skipTimerCalls != 0 || service.updateConfigCalls != 0 || service.continueAsNewCalls != 0 {
494+
if service.startCalls != 0 || service.skipTimerCalls != 0 || service.updateConfigCalls != 0 {
512495
t.Fatalf("mutation reached service without confirmation: %#v", service)
513496
}
514497
}

‎cli/internal/command/flow.go‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ func (c *flowCommand) Execute(ctx context.Context, args []string, options option
6767
return executeWaitStep(c, ctx, args[1:], options)
6868
case "update-config":
6969
return executeUpdateConfig(c, ctx, args[1:], options)
70-
case "trigger-continue-as-new":
71-
return executeTriggerContinueAsNew(c, ctx, args[1:], options)
7270
case "time-travel":
7371
return executeTimeTravel(c, ctx, args[1:], options)
7472
case "help", "--help", "-h":
@@ -354,15 +352,15 @@ func resolveRunID(
354352
if err != nil {
355353
return "", err
356354
}
357-
resolved := response.GetFlowExecutionId().GetRunId()
355+
resolved := response.GetFlowRunId().GetRunId()
358356
if resolved == "" {
359357
return "", fmt.Errorf("GetFlowSummary response has no run ID")
360358
}
361359
return resolved, nil
362360
}
363361

364362
func flowSummary(response *dexpb.GetFlowSummaryResponse) map[string]any {
365-
execution := response.GetFlowExecutionId()
363+
execution := response.GetFlowRunId()
366364
return map[string]any{
367365
"flowId": execution.GetFlowId(), "runId": execution.GetRunId(),
368366
"firstRunId": response.GetFirstRunId(), "requestId": response.GetRequestId(),
@@ -382,7 +380,7 @@ func protoTimestamp(timestamp *timestamppb.Timestamp) any {
382380
func (c *flowCommand) printUsage() {
383381
fmt.Fprintln(c.stdout, "Usage: dexcli flow <command>")
384382
fmt.Fprintln(c.stdout)
385-
fmt.Fprintln(c.stdout, "Commands: start, wait, search, summary, state, history, channel-messages, delete-channel-message, inspect, watch, stop, skip-timer, wait-step, update-config, trigger-continue-as-new, time-travel")
383+
fmt.Fprintln(c.stdout, "Commands: start, wait, search, summary, state, history, channel-messages, delete-channel-message, inspect, watch, stop, skip-timer, wait-step, update-config, time-travel")
386384
}
387385

388386
func parseInt32(value string, name string) (int32, error) {

‎cli/internal/command/flow_client_operations.go‎

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@ import (
2626
)
2727

2828
type flowConfigInput struct {
29-
ActiveStepSearchMode *string `json:"activeStepSearchMode"`
30-
ContinueAsNewThreshold *int32 `json:"continueAsNewThreshold"`
31-
ContinueAsNewPageSizeInBytes *int32 `json:"continueAsNewPageSizeInBytes"`
32-
StepDurability *string `json:"stepDurability"`
33-
WorkerTarget json.RawMessage `json:"workerTarget"`
34-
AttributeStoreNames *[]string `json:"attributeStoreNames"`
35-
HistoryWindowEvents *int32 `json:"historyWindowEvents"`
29+
ActiveStepSearchMode *string `json:"activeStepSearchMode"`
30+
StepDurability *string `json:"stepDurability"`
31+
WorkerTarget json.RawMessage `json:"workerTarget"`
32+
AttributeStoreNames *[]string `json:"attributeStoreNames"`
33+
HistoryWindowEvents *int32 `json:"historyWindowEvents"`
3634
// Accepted for compatibility and never sent; runs started on server-zd 0.1.23 or later ignore it.
3735
DeleteExpiredHistoryObjects *bool `json:"deleteExpiredHistoryObjects"`
3836
OffloadHistory *bool `json:"offloadHistory"`
@@ -241,28 +239,6 @@ func executeUpdateConfig(c *flowCommand, ctx context.Context, args []string, opt
241239
})
242240
}
243241

244-
func executeTriggerContinueAsNew(c *flowCommand, ctx context.Context, args []string, options options) error {
245-
flags := newFlagSet("dexcli flow trigger-continue-as-new", c.stderr)
246-
yes := flags.Bool("yes", false, "confirm the operation")
247-
addCommonFlags(flags, &options)
248-
if done, err := parseFlowFlags(flags, args, c.stdout, "dexcli flow trigger-continue-as-new FLOW_ID --yes"); done || err != nil {
249-
return err
250-
}
251-
flowID, err := oneFlowID(flags, "flow trigger-continue-as-new")
252-
if err != nil {
253-
return err
254-
}
255-
if !*yes {
256-
return newConfirmationError("flow trigger-continue-as-new")
257-
}
258-
return withFlowService(ctx, options, func(callCtx context.Context, client *flowService) error {
259-
if _, callErr := client.service.TriggerContinueAsNew(callCtx, &dexpb.TriggerContinueAsNewRequest{FlowId: flowID}); callErr != nil {
260-
return newOperationError("flow trigger-continue-as-new", callErr)
261-
}
262-
return writeOutput(c.stdout, options.output, map[string]any{"flowId": flowID, "requested": true})
263-
})
264-
}
265-
266242
func startFlowRequest(reader io.Reader, flowID string, flowType string, startStepType string, inputSource string, attributesSource string, configSource string, retryPolicySource string, stepOptionsSource string, timeoutHandlerOptionsSource string, flowTimeout string, timeoutPolicy string, idReusePolicy string, startDelay string, ignoreAlreadyStarted bool, requestID string) (*dexpb.StartFlowRequest, error) {
267243
input, err := parseNaturalValue(reader, inputSource)
268244
if err != nil {
@@ -473,10 +449,8 @@ func parseFlowConfig(reader io.Reader, source string) (*dexpb.FlowConfig, error)
473449
return nil, fmt.Errorf("invalid config JSON: %w", err)
474450
}
475451
config := &dexpb.FlowConfig{
476-
ContinueAsNewThreshold: input.ContinueAsNewThreshold,
477-
ContinueAsNewPageSizeInBytes: input.ContinueAsNewPageSizeInBytes,
478-
HistoryWindowEvents: input.HistoryWindowEvents,
479-
OffloadHistory: input.OffloadHistory,
452+
HistoryWindowEvents: input.HistoryWindowEvents,
453+
OffloadHistory: input.OffloadHistory,
480454
}
481455
if input.AttributeStoreNames != nil {
482456
config.AttributeStoreNames = &dexpb.AttributeStoreNames{Names: *input.AttributeStoreNames}

‎cli/internal/command/flow_operations.go‎

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func executeInspect(c *flowCommand, ctx context.Context, args []string, options
163163
if summaryErr != nil {
164164
return newOperationError("flow inspect", summaryErr)
165165
}
166-
resolvedRunID := summaryResponse.GetFlowExecutionId().GetRunId()
166+
resolvedRunID := summaryResponse.GetFlowRunId().GetRunId()
167167
history, historyErr := loadHistory(
168168
callCtx, client.service, flowID, resolvedRunID, 0, int32(*pageSize), nil,
169169
*allHistory, options.noHydrate,
@@ -196,7 +196,6 @@ func executeWatch(c *flowCommand, ctx context.Context, args []string, options op
196196
flags := newFlagSet("dexcli flow watch", c.stderr)
197197
runID := flags.String("run-id", "", "Flow run ID")
198198
fromEventID := flags.Int64("from-event-id", 0, "inclusive internal event cursor")
199-
followRuns := flags.Bool("follow-runs", false, "follow Continue-As-New runs")
200199
pageSize := flags.Int("page-size", 200, "estimated backend page size")
201200
addCommonFlags(flags, &options)
202201
if done, err := parseFlowFlags(flags, args, c.stdout, "dexcli flow watch FLOW_ID [flags]"); done || err != nil {
@@ -211,7 +210,7 @@ func executeWatch(c *flowCommand, ctx context.Context, args []string, options op
211210
}
212211
options.timeout = 0
213212
return withStreamingFlowService(ctx, options, func(client *flowService) error {
214-
return watchRun(c, ctx, client.service, flowID, *runID, *fromEventID, int32(*pageSize), *followRuns, options)
213+
return watchRun(c, ctx, client.service, flowID, *runID, *fromEventID, int32(*pageSize), options)
215214
})
216215
}
217216

@@ -223,7 +222,6 @@ func watchRun(
223222
runID string,
224223
fromEventID int64,
225224
pageSize int32,
226-
followRuns bool,
227225
options options,
228226
) error {
229227
currentRunID, err := resolveRunID(ctx, client, flowID, runID)
@@ -268,16 +266,6 @@ func watchRun(
268266
return newOperationError("flow watch", summaryErr)
269267
}
270268
if summary.GetFlowStatus() != dexpb.FlowStatus_FLOW_STATUS_RUNNING {
271-
if followRuns && summary.GetFlowStatus() == dexpb.FlowStatus_FLOW_STATUS_CONTINUED_AS_NEW {
272-
currentRunID, err = resolveRunID(ctx, client, flowID, "")
273-
if err != nil {
274-
return newOperationError("flow watch", err)
275-
}
276-
nextEventID = 0
277-
nextPageToken = nil
278-
lastStateEventID = -1
279-
continue
280-
}
281269
return nil
282270
}
283271
if nextEventID != lastStateEventID {

‎docs/design/plan/design-web.md‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
状态:Implementation in progress
44
日期:2026-08-05
55

6+
说明:Dex issue #1072 移除了 run 续接机制。下文涉及该机制的段落记录当时基于 Temporal/Cadence 的设计,不代表当前行为。
7+
68
## 1. Phase 1 范围
79

810
Phase 1 确定:
@@ -90,7 +92,7 @@ service FlowService {
9092
### 4.1 Proto
9193

9294
```proto
93-
message FlowExecutionID {
95+
message FlowRunID {
9496
string flow_id = 1;
9597
string run_id = 2;
9698
}
@@ -102,7 +104,7 @@ message GetFlowSummaryRequest {
102104
}
103105
104106
message GetFlowSummaryResponse {
105-
FlowExecutionID flow_execution_id = 1;
107+
FlowRunID flow_run_id = 1;
106108
string first_run_id = 2;
107109
string request_id = 3;
108110
string flow_type = 4;
@@ -217,7 +219,7 @@ message TimeTravelForkHistoryEvent {
217219

218220
```proto
219221
message FlowStartedOrContinuedHistoryEvent {
220-
FlowExecutionID flow_execution_id = 1;
222+
FlowRunID flow_run_id = 1;
221223
string flow_type = 2;
222224
FlowConfig flow_config = 3;
223225

0 commit comments

Comments
 (0)