@@ -288,7 +288,7 @@ type OLAPRepository interface {
288288 ListWorkflowRunDisplayNames (ctx context.Context , tenantId uuid.UUID , externalIds []uuid.UUID ) ([]* sqlcv1.ListWorkflowRunDisplayNamesRow , error )
289289 ReadTaskRunMetrics (ctx context.Context , tenantId uuid.UUID , opts ReadTaskRunMetricsOpts ) ([]TaskRunMetric , error )
290290 CreateTasks (ctx context.Context , tenantId uuid.UUID , tasks []* V1TaskWithPayload ) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error )
291- CreateTaskEvents (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error )
291+ CreateTaskEvents (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , retriedEventIds map [uuid. UUID ] struct {}, orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error )
292292 CreateDAGs (ctx context.Context , tenantId uuid.UUID , dags []* DAGWithData ) (map [uuid.UUID ]struct {}, error )
293293 GetTaskPointMetrics (ctx context.Context , tenantId uuid.UUID , startTimestamp * time.Time , endTimestamp * time.Time , bucketInterval time.Duration ) ([]* sqlcv1.GetTaskPointMetricsRow , error )
294294 UpdateTaskStatuses (ctx context.Context , tenantIds []uuid.UUID ) (bool , []UpdateTaskStatusRow , error )
@@ -2020,7 +2020,7 @@ func (r *OLAPRepositoryImpl) tryAcquireAdvisoryLocksForWorkflowRuns(ctx context.
20202020 return locksNotAcquired , nil
20212021}
20222022
2023- func (r * OLAPRepositoryImpl ) writeTaskEventBatch (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error ) {
2023+ func (r * OLAPRepositoryImpl ) writeTaskEventBatch (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , retriedEventIds map [uuid. UUID ] struct {}, orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error ) {
20242024 tx , commit , rollback , err := sqlchelpers .PrepareTx (ctx , r .pool , r .l )
20252025 if err != nil {
20262026 return nil , nil , err
@@ -2069,7 +2069,10 @@ func (r *OLAPRepositoryImpl) writeTaskEventBatch(ctx context.Context, tenantId u
20692069 eventsToWrite = append (eventsToWrite , event )
20702070 }
20712071
2072- eventsForStatusUpdate = append (eventsForStatusUpdate , event )
2072+ // a retried attempt's failure must not make the task, or its DAG, terminal
2073+ if _ , retried := retriedEventIds [event .ExternalID ]; ! retried {
2074+ eventsForStatusUpdate = append (eventsForStatusUpdate , event )
2075+ }
20732076
20742077 dummyInsertedAt := time .Now ().Add (time .Duration (rand .Intn (2 * 300 + 1 )- 300 ) * time .Millisecond ) // #nosec G404 -- non-cryptographic jitter, not security-sensitive
20752078
@@ -2080,7 +2083,7 @@ func (r *OLAPRepositoryImpl) writeTaskEventBatch(ctx context.Context, tenantId u
20802083 })
20812084 }
20822085
2083- if len (eventsForStatusUpdate ) == 0 && len (orchestratorUpdates ) == 0 {
2086+ if len (eventsToWrite ) == 0 && len ( eventsForStatusUpdate ) == 0 && len (orchestratorUpdates ) == 0 {
20842087 return nil , workflowRunIdsOfLocksNotAcquired , nil
20852088 }
20862089
@@ -2664,8 +2667,8 @@ func (r *OLAPRepositoryImpl) writeDAGBatch(ctx context.Context, tenantId uuid.UU
26642667 return workflowRunIdsOfLocksNotAcquired , nil
26652668}
26662669
2667- func (r * OLAPRepositoryImpl ) CreateTaskEvents (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error ) {
2668- return r .writeTaskEventBatch (ctx , tenantId , events , eventExternalIdToWorkflowRunId , orchestratorUpdates , operatorRunIds )
2670+ func (r * OLAPRepositoryImpl ) CreateTaskEvents (ctx context.Context , tenantId uuid.UUID , events []sqlcv1.CreateTaskEventsOLAPParams , eventExternalIdToWorkflowRunId map [uuid.UUID ]uuid.UUID , retriedEventIds map [uuid. UUID ] struct {}, orchestratorUpdates []OrchestratorDAGStatusUpdateOpt , operatorRunIds map [uuid.UUID ]struct {}) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error ) {
2671+ return r .writeTaskEventBatch (ctx , tenantId , events , eventExternalIdToWorkflowRunId , retriedEventIds , orchestratorUpdates , operatorRunIds )
26692672}
26702673
26712674func (r * OLAPRepositoryImpl ) CreateTasks (ctx context.Context , tenantId uuid.UUID , tasks []* V1TaskWithPayload ) (* StatusUpdateResult , map [uuid.UUID ]struct {}, error ) {
0 commit comments