OutboxProcessorListener events are emitted before the transaction commits; metrics over-count on commit failure
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Start in OutboxProcessor.processNext, where listener.onEntryProcessed runs right after store.updateAfterProcessingBatch and before the transaction commits. Then read OutboxScheduler and the TransactionRunner used around runInTransaction to see where an after-commit notification could go. Done means listener callbacks fire only after a successful commit, or the pre-commit behaviour is documented; the design choice needs maintainer input first.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Severity: Low · Area: okapi-core OutboxProcessor listener notifications · Found in: code review of main @ e5630a1
Problem
OutboxProcessor.processNext calls listener.onEntryProcessed(...) (Delivered / RetryScheduled / Failed) right after store.updateAfterProcessingBatch, while still inside the scheduler's transaction, before it commits. If the commit then fails (connection loss, serialization failure, server-side timeout), the DB rolls back to PENDING, but okapi.entries.delivered and okapi.entries.failed have already been incremented. The rows are delivered again next tick and counted again.
Metrics therefore over-report successful deliveries in exactly the failure scenarios where operators rely on them. A custom listener that does something non-idempotent (e.g. notifying another system) would act on a state that was never persisted.
Suggested fix
Defer listener callbacks until after the transaction commits: for example, return the processed entries from the transactional block and notify in OutboxScheduler after runInTransaction returns, or register an after-commit hook through TransactionRunner. At minimum, document that events are pre-commit.
- Vorherrschende Sprache
- Kotlin
- Sterne
- 14
- Forks
- 0
- Ø Merge
- 9 Std. 54 Min.
- Gemergte PRs (30 T.)
- 11
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus softwaremill/okapi
-
bug
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
softwaremill/okapi#141 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 1-2 Tage Anfängerfreundlichkeit 42/100
softwaremill/okapi#136 ·
Maintainer antworten meist innerhalb von 1 Tag
-
breaking-change bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
softwaremill/okapi#135 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 62/100
softwaremill/okapi#134 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 22/100
softwaremill/okapi#133 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in softwaremill/okapi
Ähnliche Issues
-
autoteam community connectors/destination/mssql connectors/source/hubspot team/use
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
airbytehq/airbyte#91201 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug javascript
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Source: c7 Type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
2.23
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
ankidroid/Anki-Android#23042 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Submission] AI通话助手Offensubmit-adaption submit-adaption-pre
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
BetterAndroid/android-notification-icon-project#828 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag