Skip to content

Fix DurableReceiver not completing listener after early dead-letter#2384

Merged
jeremydmiller merged 1 commit intoJasperFx:mainfrom
lyall-sc:bugfix/ack-msg-with-no-msg-type
Mar 31, 2026
Merged

Fix DurableReceiver not completing listener after early dead-letter#2384
jeremydmiller merged 1 commit intoJasperFx:mainfrom
lyall-sc:bugfix/ack-msg-with-no-msg-type

Conversation

@lyall-sc
Copy link
Copy Markdown
Contributor

When an envelope arrived with a missing MessageType or failed metadata unwrapping, DurableReceiver moved it to the dead letter queue but never called CompleteAsync on the listener. For transports with manual offset management (e.g. Kafka with auto-commit disabled), this meant the offset was never advanced and the message was redelivered indefinitely on reconnect or pod restart.

Fix by calling _completeBlock.PostAsync after _moveToErrors.PostAsync in both early-exit paths within ShouldPersistBeforeProcessing.

Closes #2383

When an envelope arrived with a missing MessageType or failed metadata
unwrapping, DurableReceiver moved it to the dead letter queue but never
called CompleteAsync on the listener. For transports with manual offset
management (e.g. Kafka with auto-commit disabled), this meant the offset
was never advanced and the message was redelivered indefinitely on
reconnect or pod restart.

Fix by calling _completeBlock.PostAsync after _moveToErrors.PostAsync in
both early-exit paths within ShouldPersistBeforeProcessing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DurableReceiver not completing listener after early dead-letter

2 participants