HDDS-13666. [DiskBalancer]Avoid reverse looping in destination selection when thresholds are low #9068
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.
What changes were proposed in this pull request?
Sorting based on density is ok to choose source and possible destination, but the logic of choosing destination here can not be direct reverse loop, and need care for choosing destination should be make that node as candidate for reverse movement. And if no destination is possible to choose, should mark disk as balanced.
This reverse looping is especially seen in case of very low threshold such that the volume utilisation of source and destination disk is close making diskbalancer running forever without doing actual balancing.
As a solution to this while choosing container from source volume, we can check if movement of this container should satisfy the below condition.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-13666
How was this patch tested?
Added new UT
TestDefaultContainerChoosingPolicy.