fix(projections): handle reduce error by updating failed events (#10726)

# Which Problems Are Solved

I noticed that a failure in the projections handlers `reduce` function
(e.g. creating the statement or checking preconditions for the
statement) would not update the `failed_events2` table.
This was due to a wrong error handling, where as long as the
`maxFailureCount` was not reached, the error was returned after updating
the `failed_events2` table, which causes the transaction to be rolled
back and thus losing the update.

# How the Problems Are Solved

Wrap the error into an `executionError`, so the transaction is not
rolled back.

# Additional Changes

none

# Additional Context

- noticed internally
- requires backport to v3.x and v4.x

(cherry picked from commit ee92560f32)
This commit is contained in:
Livio Spring committed 2025-09-16 08:44:12 +02:00
1 parent 358a0d93d0
commit bc2a565da2
1 file changed
+1 -1
+1 -1
View File
@@ -50,7 +50,7 @@ func (h *Handler) eventsToStatements(tx *sql.Tx, events []eventstore.Event, curr
if shouldContinue := h.handleFailedStmt(tx, failureFromEvent(event, err)); shouldContinue {
continue
}
return statements, err
return statements, &executionError{err}
}
offset++
if !previousPosition.Equal(event.Position()) {