@@ -25,7 +25,7 @@ func ingestDagStepTrigger(
2525) * IngestTriggerRunsEntry {
2626 t .Helper ()
2727
28- result , err := ingestDagStepTriggerResult (ctx , repo , tenantID , task , invocationCount , actionId , childIndex , false )
28+ result , err := ingestDagStepTriggerResult (ctx , repo , tenantID , task , invocationCount , actionId , childIndex , [] byte ( `{"x":1}` ), false )
2929 require .NoError (t , err )
3030 require .NotNil (t , result .TriggerRunsResult )
3131 require .Len (t , result .TriggerRunsResult .Entries , 1 )
@@ -41,6 +41,7 @@ func ingestDagStepTriggerResult(
4141 invocationCount int32 ,
4242 actionId string ,
4343 childIndex int64 ,
44+ input []byte ,
4445 isSkipped bool ,
4546) (* IngestDurableTaskEventResult , error ) {
4647 parentExternalId := task .ExternalID
@@ -61,7 +62,7 @@ func ingestDagStepTriggerResult(
6162 TriggerTaskData : & TriggerTaskData {
6263 IsSkipped : isSkipped ,
6364 WorkflowName : "my-dag" ,
64- Data : [] byte ( `{"x":1}` ) ,
65+ Data : input ,
6566 TargetActionId : & actionId ,
6667 ParentExternalId : & parentExternalId ,
6768 ParentTaskId : & parentTaskId ,
@@ -84,7 +85,7 @@ func reinvokeDurableTask(t *testing.T, ctx context.Context, repos userEventScope
8485 require .NoError (t , err )
8586}
8687
87- func TestDagStepReplayAtAnotherStepsNodeIsNondeterministic (t * testing.T ) {
88+ func TestDagStepReplayReusesTheEntryEvenWhenTheInputBytesDiffer (t * testing.T ) {
8889 pool , cleanup := setupPostgresWithMigration (t )
8990 defer cleanup ()
9091
@@ -93,17 +94,20 @@ func TestDagStepReplayAtAnotherStepsNodeIsNondeterministic(t *testing.T) {
9394 repos := newUserEventScopeTestRepositories (t , pool )
9495 task := createUserEventScopeTestTask (t , ctx , repos , tenantID , 201 )
9596
96- dedupe := ingestDagStepTrigger (t , ctx , repos .durable , tenantID , task , 1 , "my-dag:dedupe-action-items " , 13 )
97- require .False (t , dedupe .AlreadyExisted )
98- require .EqualValues (t , 1 , dedupe .NodeId )
97+ first := ingestDagStepTrigger (t , ctx , repos .durable , tenantID , task , 1 , "my-dag:step-a " , 1 )
98+ require .False (t , first .AlreadyExisted )
99+ require .EqualValues (t , 1 , first .NodeId )
99100
100101 reinvokeDurableTask (t , ctx , repos , tenantID , task )
101102
102- _ , err := ingestDagStepTriggerResult (ctx , repos .durable , tenantID , task , 2 , "my-dag:bold-dates-and-quantities" , 9 , false )
103+ result , err := ingestDagStepTriggerResult (ctx , repos .durable , tenantID , task , 2 , "my-dag:step-a" , 1 , []byte (`{"x": 1}` ), false )
104+ require .NoError (t , err )
105+ require .Len (t , result .TriggerRunsResult .Entries , 1 )
103106
104- var nonDeterminismErr * NonDeterminismError
105- require .ErrorAs (t , err , & nonDeterminismErr )
106- require .EqualValues (t , 1 , nonDeterminismErr .NodeId )
107+ replayed := result .TriggerRunsResult .Entries [0 ]
108+ require .True (t , replayed .AlreadyExisted )
109+ require .EqualValues (t , 1 , replayed .NodeId )
110+ require .Equal (t , first .WorkflowRunExternalId , replayed .WorkflowRunExternalId )
107111}
108112
109113func TestDagStepEntriesOfSameWorkflowHaveDistinctIdempotencyKeys (t * testing.T ) {
@@ -141,7 +145,7 @@ func TestDagStepCreatedSkippedTakesNextSatisfiedOrder(t *testing.T) {
141145 require .False (t , running .IsSatisfied )
142146 require .Nil (t , running .SatisfiedOrder )
143147
144- result , err := ingestDagStepTriggerResult (ctx , repos .durable , tenantID , task , 1 , "my-dag:step-b" , 2 , true )
148+ result , err := ingestDagStepTriggerResult (ctx , repos .durable , tenantID , task , 1 , "my-dag:step-b" , 2 , [] byte ( `{"x":1}` ), true )
145149 require .NoError (t , err )
146150
147151 skipped := result .TriggerRunsResult .Entries [0 ]
0 commit comments