HDDS-12547. Container creation and import use the same VolumeChoosingPolicy #8090
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?
Currently, KeyValueHandler and ContainerImporter have its owner VolumeChoosingPolicy instances. As the VolumeChoosingPolicy is decided by same "hdds.datanode.volume.choosing.policy" property, so KeyValueHandler and ContainerImporter and use the same VolumeChoosingPolicy instance.
Further, VolumeChoosingPolicy#chooseVolume, its Java Doc says "The implementations of this interface must be thread-safe.", regarding the space full check and space reservation, it can be done as an atomic operation in the chooseVolume internally, so that there will no over allocation of space due to concurrent container creation and container import.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-12547
How was this patch tested?
CI:
https://github.com/peterxcli/ozone/actions/runs/13871750654