Skip to content

Commit 6aef320

Browse files
authored
Merge pull request #23 from Clarilab/revert/outbox-in-transaction
Revert "fix[event-stores] let event-handler-in-tx (outbox) run in database transaction"
2 parents 1263c06 + a1a8018 commit 6aef320

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

eventstore/mongodb/eventstore.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
211211
return nil
212212
}
213213

214+
var handleEvents bool
215+
214216
// Run the operation in a transaction if using an outbox, otherwise it's not needed.
215217
if s.eventHandlerInTX != nil {
216218
if err := s.database.CollectionExecWithTransaction(ctx, s.collectionName, func(txCtx mongo.SessionContext, c *mongo.Collection) error {
@@ -225,12 +227,6 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
225227
}
226228
}
227229

228-
for i := range events {
229-
if err := s.eventHandlerInTX.HandleEvent(ctx, events[i]); err != nil {
230-
return fmt.Errorf("could not handle event in transaction: %w", err)
231-
}
232-
}
233-
234230
return nil
235231
}); err != nil {
236232
return &eh.EventStoreError{
@@ -242,6 +238,8 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
242238
Events: events,
243239
}
244240
}
241+
242+
handleEvents = true
245243
} else {
246244
if err := s.database.CollectionExec(ctx, s.collectionName, func(ctx context.Context, c *mongo.Collection) error {
247245
dummySessionCtx := mongo.NewSessionContext(ctx, nil)
@@ -263,6 +261,14 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
263261
}
264262
}
265263

264+
if handleEvents {
265+
for i := range events {
266+
if err := s.eventHandlerInTX.HandleEvent(ctx, events[i]); err != nil {
267+
return fmt.Errorf("could not handle event in transaction: %w", err)
268+
}
269+
}
270+
}
271+
266272
// Let the optional event handler handle the events.
267273
if s.eventHandlerAfterSave != nil {
268274
for _, e := range events {

eventstore/mongodb_v2/eventstore.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -332,14 +332,6 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
332332
}
333333
}
334334

335-
if s.eventHandlerInTX != nil {
336-
for i := range events {
337-
if err := s.eventHandlerInTX.HandleEvent(ctx, events[i]); err != nil {
338-
return fmt.Errorf("could not handle event: %w", err)
339-
}
340-
}
341-
}
342-
343335
return nil
344336
}); err != nil {
345337
return &eh.EventStoreError{
@@ -352,6 +344,14 @@ func (s *EventStore) Save(ctx context.Context, events []eh.Event, originalVersio
352344
}
353345
}
354346

347+
if s.eventHandlerInTX != nil {
348+
for i := range events {
349+
if err := s.eventHandlerInTX.HandleEvent(ctx, events[i]); err != nil {
350+
return fmt.Errorf("could not handle event: %w", err)
351+
}
352+
}
353+
}
354+
355355
// Let the optional event handler handle the events.
356356
if s.eventHandlerAfterSave != nil {
357357
for i := range events {

0 commit comments

Comments
 (0)