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

Allow for 'empty' broadcast send attempt #1876

Merged
merged 1 commit into from
Jun 25, 2024

Conversation

moscicky
Copy link
Collaborator

@moscicky moscicky commented Jun 25, 2024

This PR implements a fix for a bug that would cause a broadcast message to be undeliverable. Consider a following scenario:

  1. Message is being sent to service A with instances A1, A2 and A3
  2. Message is sent successfully to instances A1 and A2 but fails to be delivered to A3
  3. Sent is being retried
  4. The set of instances changes to just A1 and A2 (perhaps there was ongoing rolling upgrade and A3 was terminated)

Previously, when that situation occurred the message would be retried until its TTL expired - A1 and A2 were already marked as succeeded and so they were not added to children of MultiMessageSendingResult. children was an empty list which was considered a failure so the message was retried. This would go on as long as the set of uris returned from EndpointAddressResolver equals the set of succeededUris from message.

Starting from this PR children will contain sent messages from all attempts so a 'empty' send would not be considered a failure.

@moscicky moscicky force-pushed the broadcast-undeliverable-messages-fix branch from da0ea25 to a9a485c Compare June 25, 2024 08:27
@moscicky moscicky marked this pull request as ready for review June 25, 2024 08:47
@moscicky moscicky merged commit 2673b98 into master Jun 25, 2024
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants