OutboxProcessorListener events are emitted before the transaction commits; metrics over-count on commit failure
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Kotlin
- Estrelas
- 14
- Forks
- 0
- Merge médio
- 9h 54min
- PRs com merge (30d)
- 11
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de softwaremill/okapi
-
bug
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
softwaremill/okapi#141 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 1-2 dias Facilidade para iniciantes 42/100
softwaremill/okapi#136 ·
Mantenedores costumam responder em até 1 dia
-
breaking-change bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
softwaremill/okapi#135 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 3/5 Meio dia Facilidade para iniciantes 62/100
softwaremill/okapi#134 ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 22/100
softwaremill/okapi#133 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de softwaremill/okapi
Issues semelhantes
-
unconfirmed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
thunderbird/thunderbird-android#11893 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 65/100
Droid-Deck/DroidDeck#2198 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
world-federation-of-advertisers/cross-media-measurement#4846 ·
Mantenedores costumam responder em até 1 dia
-
autoteam community connectors/destination/mssql connectors/source/hubspot team/use
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
airbytehq/airbyte#91201 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug javascript
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia