Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Event Hubs Client] Idempotent Error Handling #25586

Merged
merged 1 commit into from
Dec 1, 2021

Conversation

jsquire
Copy link
Member

@jsquire jsquire commented Nov 30, 2021

Summary

The focus of these changes is to ensure that the AMQP connection and link states are fully reset on any exception after retries are exhausted in order to ensure no data loss.

In error scenarios with ambiguous outcomes, it is possible for the client and service state for idempotent sequencing to become out-of-sync with no way to detect or correct the problem. When this happens, it is possible that events being published are incorrectly identified by the service as duplicates and their receipt acknowledged. This leads the client to signal to callers that publishing was successful, though the events were ignored by the service and will never be available to be read.

By resetting the connection and forcing the client to use a new publisher identifier, the service will reset state and perform the initial handshake with the client, ensuring that state is properly synchronized between them.

@jsquire jsquire added Event Hubs Client This issue points to a problem in the data-plane of the library. labels Nov 30, 2021
@jsquire jsquire added this to the [2021] December milestone Nov 30, 2021
@jsquire jsquire self-assigned this Nov 30, 2021
The focus of these changes is to ensure that the AMQP connection and link
states are fully reset on any exception after retries are exhausted in order
to ensure no data loss.

In error scenarios with ambiguous outcomes, it is possible for the client and
service state for idempotent sequencing to become out-of-sync with no way to
detect or correct the problem.  When this happens, it is possible that events
being published are incorrectly identified by the service as duplicates and
their receipt acknowledged.  This leads the client to signal to callers that
publishing was successful, though the events were ignored by the service and
will never be available to be read.

By resetting the connection and forcing the client to use a new publisher
identifier, the service will reset state and perform the initial handshake
with the client, ensuring that state is properly synchronized between them.
@jsquire jsquire merged commit 345c70e into Azure:main Dec 1, 2021
@jsquire jsquire deleted the eventhubs/idempotent-error branch December 1, 2021 20:22
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Sep 4, 2023
Update readme.python.md (Azure#25586)

* Update readme.python.md

* Update readme.python.md
azure-sdk pushed a commit to azure-sdk/azure-sdk-for-net that referenced this pull request Sep 4, 2023
Update readme.python.md (Azure#25586)

* Update readme.python.md

* Update readme.python.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Client This issue points to a problem in the data-plane of the library. Event Hubs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants