-
Notifications
You must be signed in to change notification settings - Fork 4k
AWS peer discovery: ensure consistent hostname path ordering #14557
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
Merged
lukebakken
merged 2 commits into
rabbitmq:main
from
BenAtAmazon:aws/fix-peer-discovery-hostname-path-ordering
Sep 23, 2025
Merged
AWS peer discovery: ensure consistent hostname path ordering #14557
lukebakken
merged 2 commits into
rabbitmq:main
from
BenAtAmazon:aws/fix-peer-discovery-hostname-path-ordering
Sep 23, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SimonUnge
reviewed
Sep 16, 2025
deps/rabbitmq_peer_discovery_aws/src/rabbit_peer_discovery_aws.erl
Outdated
Show resolved
Hide resolved
SimonUnge
reviewed
Sep 16, 2025
deps/rabbitmq_peer_discovery_aws/src/rabbit_peer_discovery_aws.erl
Outdated
Show resolved
Hide resolved
SimonUnge
reviewed
Sep 16, 2025
deps/rabbitmq_peer_discovery_aws/src/rabbit_peer_discovery_aws.erl
Outdated
Show resolved
Hide resolved
SimonUnge
reviewed
Sep 16, 2025
deps/rabbitmq_peer_discovery_aws/src/rabbit_peer_discovery_aws.erl
Outdated
Show resolved
Hide resolved
e3d3637 to
b209d6a
Compare
Collaborator
|
Looks good to me! |
the-mikedavis
approved these changes
Sep 18, 2025
lukebakken
approved these changes
Sep 23, 2025
AWS EC2 API returns networkInterfaceSet and privateIpAddressesSet in arbitrary order, causing non-deterministic hostname resolution during peer discovery. This leads to inconsistent cluster formation. Changes: - Sort network interfaces by deviceIndex (0 first for primary ENI) - Sort private IP addresses by primary flag (primary=true first) - Add debug logging to show hostname path selection and sorting results - Add comprehensive unit tests for sorting behavior The sorting ensures deviceIndex=0 and primary=true IPs are consistently selected first, making peer discovery deterministic across deployments.
… feedback on debug logs and sorting helper functions)
b209d6a to
7cebf89
Compare
mergify bot
pushed a commit
that referenced
this pull request
Sep 23, 2025
* AWS peer discovery: ensure consistent hostname path ordering AWS EC2 API returns networkInterfaceSet and privateIpAddressesSet in arbitrary order, causing non-deterministic hostname resolution during peer discovery. This leads to inconsistent cluster formation. Changes: - Sort network interfaces by deviceIndex (0 first for primary ENI) - Sort private IP addresses by primary flag (primary=true first) - Add debug logging to show hostname path selection and sorting results - Add comprehensive unit tests for sorting behavior The sorting ensures deviceIndex=0 and primary=true IPs are consistently selected first, making peer discovery deterministic across deployments. * AWS peer discovery: ensure consistent hostname path ordering (address feedback on debug logs and sorting helper functions) (cherry picked from commit 4a32470)
12 tasks
michaelklishin
added a commit
that referenced
this pull request
Sep 24, 2025
AWS peer discovery: ensure consistent hostname path ordering (backport #14557)
michaelklishin
pushed a commit
that referenced
this pull request
Sep 24, 2025
* AWS peer discovery: ensure consistent hostname path ordering AWS EC2 API returns networkInterfaceSet and privateIpAddressesSet in arbitrary order, causing non-deterministic hostname resolution during peer discovery. This leads to inconsistent cluster formation. Changes: - Sort network interfaces by deviceIndex (0 first for primary ENI) - Sort private IP addresses by primary flag (primary=true first) - Add debug logging to show hostname path selection and sorting results - Add comprehensive unit tests for sorting behavior The sorting ensures deviceIndex=0 and primary=true IPs are consistently selected first, making peer discovery deterministic across deployments. * AWS peer discovery: ensure consistent hostname path ordering (address feedback on debug logs and sorting helper functions)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed Changes
AWS EC2 API returns
networkInterfaceSetandprivateIpAddressesSetin arbitrary order, causing non-deterministic hostname resolution during peer discovery and inconsistent cluster formation when setting certaincluster_formation.aws.hostname_pathconfigurations such as:See https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html
Changes:
Add debug logging to show hostname path selection and sorting results(removed in second revision)The sorting ensures
deviceIndex=0andprimary=trueIPs are consistently selected as intended, making peer discovery deterministic across deployments. Note that since EC2 does not provide an index forprivateIpAddressesSet(likedeviceIndexfornetworkInterfaceSet), this determinism forprivateIpAddressesSetonly applies if there are 1 or 2 members inprivateIpAddressesSetvia theprimary=trueorprimary=false. If there was a 3rd member inprivateIpAddressesSet, the twoprimary=falseIPs orders are non-deterministic.Types of Changes
What types of changes does your code introduce to this project?
Put an
xin the boxes that applyChecklist
Put an
xin the boxes that apply.You can also fill these out after creating the PR.
This is simply a reminder of what we are going to look for before merging your code.
CONTRIBUTING.mddocumentFurther Comments
N/A