HDDS-7998. Synchronize on containerInfo in ReplicationManager and MoveManager #4295
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?
Keeping in line with the Legacy Replication Manager, we should synchronize on the containerInfo currently being processed within RM and the new MoveManager.
ICR and FCR processing already synchronizes on containerInfo as it processes the container, and in order to get a consistent view of the container as it is processed, Legacy ReplicationManager also synchronized on containerInfo.
By ensuring ICR / FCR, RM and MoveManager synchronize on the containerInfo object, we can ensure that each processing area gets a consistent view of the container pendingOp, replicas and state as it processes the container, and avoid any unexpected consequences around concurrently modifying the container state in SCM.
Replication manager is now split into 2 stages. The "check" stage, and the unhealthy (under, over, mis-replicated) processing stage. Therefore we need to synchronized in two places inside RM.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7998
How was this patch tested?
No logic changes, so the existing tests should cover it.