OutboxProcessorListener events are emitted before the transaction commits; metrics over-count on commit failure
维护者通常 1 天内回复
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Kotlin
- 星标
- 14
- 派生
- 0
- 平均合并
- 9 小时 54 分钟
- 30 天内合并 PR
- 11
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
softwaremill/okapi 的其他 Issue
-
bug
难度 5/5 一周以上 新手友好度 35/100
softwaremill/okapi#141 ·
维护者通常 1 天内回复
-
enhancement
难度 4/5 1-2 天 新手友好度 42/100
softwaremill/okapi#136 ·
维护者通常 1 天内回复
-
breaking-change bug
难度 4/5 3-5 天 新手友好度 35/100
softwaremill/okapi#135 ·
维护者通常 1 天内回复
-
bug
难度 3/5 半天 新手友好度 62/100
softwaremill/okapi#134 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 22/100
softwaremill/okapi#133 ·
维护者通常 1 天内回复
查看 softwaremill/okapi 的全部 Issue
相似的 Issue
-
autoteam community connectors/destination/mssql connectors/source/hubspot team/use
难度 2/5 1-3 小时 新手友好度 77/100
airbytehq/airbyte#91201 · 1 条评论 ·
维护者通常 1 天内回复
-
bug javascript
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
Source: c7 Type: bug
难度 2/5 1-3 小时 新手友好度 72/100
-
2.23
难度 2/5 1-3 小时 新手友好度 65/100
ankidroid/Anki-Android#23042 · 4 条评论 ·
维护者通常 1 天内回复
-
submit-adaption submit-adaption-pre
难度 1/5 1 小时以内 新手友好度 88/100
BetterAndroid/android-notification-icon-project#828 · 1 条评论 ·
维护者通常 1 天内回复