AWS peer discovery: ensure consistent hostname path ordering (backport #14557) #14594
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
This is an automatic backport of pull request #14557 done by [Mergify](https://mergify.com).