sergeyuttsel commented on code in PR #1369:
URL: https://github.com/apache/ignite-3/pull/1369#discussion_r1035003604


##########
modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaManager.java:
##########
@@ -164,7 +191,7 @@ public Replica replica(ReplicationGroupId replicaGrpId) 
throws NodeStoppingExcep
         }
 
         try {
-            return replicas.get(replicaGrpId);
+            return replicas.get(replicaGrpId).join();

Review Comment:
   fixed



##########
modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaManager.java:
##########
@@ -205,15 +232,19 @@ private Replica startReplicaInternal(
             ReplicationGroupId replicaGrpId,
             ReplicaListener listener
     ) {
-        var replica = new Replica(replicaGrpId, listener);
+        replicas.compute(replicaGrpId, (replicationGroupId, replicaFut) -> {
+            if (replicaFut == null) {
+                replicaFut = CompletableFuture.completedFuture(new 
Replica(replicaGrpId, listener));
 
-        Replica previous = replicas.putIfAbsent(replicaGrpId, replica);
+                return replicaFut;
+            } else {
+                replicaFut.complete(new Replica(replicaGrpId, listener));
 
-        if (previous != null) {
-            throw new ReplicaIsAlreadyStartedException(replicaGrpId);
-        }
+                return replicaFut;
+            }
+        });
 
-        return replica;
+        return replicas.get(replicaGrpId).join();

Review Comment:
   fixed



##########
modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaManager.java:
##########
@@ -330,6 +361,21 @@ private void sendReplicaUnavailableErrorResponse(
         }
     }
 
+    /**
+     * Sends await replica response.
+     */
+    private void sendAwaitReplicaResponse(
+            ClusterNode sender,

Review Comment:
   fixed



##########
modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaManager.java:
##########
@@ -372,10 +418,10 @@ private NetworkMessage 
prepareReplicaErrorResponse(HybridTimestamp requestTimest
     private void idleSafeTimeSync() {
         replicas.values().forEach(r -> {
             ReplicaSafeTimeSyncRequest req = 
REPLICA_MESSAGES_FACTORY.replicaSafeTimeSyncRequest()
-                    .groupId(r.groupId())
+                    .groupId(r.join().groupId())

Review Comment:
   fixed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to