Murtadha Hubail has submitted this change and it was merged. Change subject: [NO ISSUE][REPL] Ensure Thread Safety of ReplicaManager ......................................................................
[NO ISSUE][REPL] Ensure Thread Safety of ReplicaManager - user model changes: no - storage format changes: no - interface changes: no Details: - Ensure thread safety of ReplicaManager to eliminate possible concurrent modifications between reading and modifying current replicas. Change-Id: Ied7549436f7d721341c6699231a202545bac6252 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2402 Reviewed-by: abdullah alamoudi <bamou...@gmail.com> Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu> --- M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java 1 file changed, 5 insertions(+), 3 deletions(-) Approvals: Anon. E. Moose #1000171: abdullah alamoudi: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java index 30416a3..c821c56 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/ReplicaManager.java @@ -40,9 +40,11 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.control.common.controllers.NCConfig; import org.apache.hyracks.storage.common.LocalResource; +import org.apache.hyracks.util.annotations.ThreadSafe; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +@ThreadSafe public class ReplicaManager implements IReplicaManager { private static final Logger LOGGER = LogManager.getLogger(); @@ -86,13 +88,13 @@ } @Override - public List<IPartitionReplica> getReplicas(int partition) { + public synchronized List<IPartitionReplica> getReplicas(int partition) { return replicas.entrySet().stream().filter(e -> e.getKey().getPartition() == partition).map(Map.Entry::getValue) .collect(Collectors.toList()); } @Override - public Set<Integer> getPartitions() { + public synchronized Set<Integer> getPartitions() { return Collections.unmodifiableSet(partitions); } @@ -110,7 +112,7 @@ } @Override - public void release(int partition) throws HyracksDataException { + public synchronized void release(int partition) throws HyracksDataException { if (!partitions.contains(partition)) { return; } -- To view, visit https://asterix-gerrit.ics.uci.edu/2402 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ied7549436f7d721341c6699231a202545bac6252 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha Hubail <mhub...@apache.org> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-Reviewer: Murtadha Hubail <mhub...@apache.org> Gerrit-Reviewer: abdullah alamoudi <bamou...@gmail.com>