This is an automated email from the ASF dual-hosted git repository.

sanpwc pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 067ba4d806 IGNITE-22851 Move raft client's update configuration 
process into replicas (#4223)
067ba4d806 is described below

commit 067ba4d806c83fb52da7e2c8c33854da9cc39c6a
Author: Mikhail Efremov <[email protected]>
AuthorDate: Thu Aug 15 18:57:57 2024 +0600

    IGNITE-22851 Move raft client's update configuration process into replicas 
(#4223)
---
 .../partition/replicator/PartitionReplicaLifecycleManager.java    | 6 ++----
 .../main/java/org/apache/ignite/internal/replicator/Replica.java  | 8 ++++++++
 .../java/org/apache/ignite/internal/replicator/ReplicaImpl.java   | 7 +++++++
 .../ignite/internal/replicator/ZonePartitionReplicaImpl.java      | 7 +++++++
 .../apache/ignite/internal/table/distributed/TableManager.java    | 6 ++----
 5 files changed, 26 insertions(+), 8 deletions(-)

diff --git 
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java
 
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java
index 529c625c21..911848f518 100644
--- 
a/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java
+++ 
b/modules/partition-replicator/src/main/java/org/apache/ignite/internal/partition/replicator/PartitionReplicaLifecycleManager.java
@@ -802,8 +802,7 @@ public class PartitionReplicaLifecycleManager implements 
IgniteComponent {
 
             // Update raft client peers and learners according to the actual 
assignments.
             return replicaMgr.replica(zonePartitionId)
-                    .thenApply(Replica::raftClient)
-                    .thenAccept(raftClient -> 
raftClient.updateConfiguration(fromAssignments(stableAssignments)));
+                    .thenAccept(replica -> 
replica.updatePeersAndLearners(fromAssignments(stableAssignments)));
         }));
     }
 
@@ -977,8 +976,7 @@ public class PartitionReplicaLifecycleManager implements 
IgniteComponent {
                             : union(pendingAssignmentsNodes, 
stableAssignments.nodes());
 
                     replicaMgr.replica(replicaGrpId)
-                            .thenApply(Replica::raftClient)
-                            .thenAccept(raftClient -> 
raftClient.updateConfiguration(fromAssignments(newAssignments)));
+                            .thenAccept(replica -> 
replica.updatePeersAndLearners(fromAssignments(newAssignments)));
                 }), ioExecutor);
     }
 
diff --git 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/Replica.java
 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/Replica.java
index b9141c3f98..b476277846 100644
--- 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/Replica.java
+++ 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/Replica.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.replicator;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.internal.network.NetworkMessage;
 import 
org.apache.ignite.internal.placementdriver.message.PlacementDriverReplicaMessage;
+import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
 import org.apache.ignite.internal.replicator.listener.ReplicaListener;
 import org.apache.ignite.internal.replicator.message.ReplicaRequest;
@@ -73,4 +74,11 @@ public interface Replica {
      * Shutdowns the replica.
      */
     CompletableFuture<Void> shutdown();
+
+    /**
+     * Updates local peers and learners.
+     *
+     * @param peersAndLearners Peers and learners.
+     */
+    void updatePeersAndLearners(PeersAndLearners peersAndLearners);
 }
diff --git 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaImpl.java
 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaImpl.java
index ef1c673869..7f46cd276e 100644
--- 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaImpl.java
+++ 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaImpl.java
@@ -41,6 +41,7 @@ import 
org.apache.ignite.internal.placementdriver.message.LeaseGrantedMessageRes
 import 
org.apache.ignite.internal.placementdriver.message.PlacementDriverMessagesFactory;
 import 
org.apache.ignite.internal.placementdriver.message.PlacementDriverReplicaMessage;
 import org.apache.ignite.internal.raft.Peer;
+import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
 import org.apache.ignite.internal.replicator.listener.ReplicaListener;
 import 
org.apache.ignite.internal.replicator.message.PrimaryReplicaChangeCommand;
@@ -306,4 +307,10 @@ public class ReplicaImpl implements Replica {
         listener.onShutdown();
         return raftClient.unsubscribeLeader();
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public void updatePeersAndLearners(PeersAndLearners peersAndLearners) {
+        raftClient.updateConfiguration(peersAndLearners);
+    }
 }
diff --git 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ZonePartitionReplicaImpl.java
 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ZonePartitionReplicaImpl.java
index 993219518f..4ccc5489f0 100644
--- 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ZonePartitionReplicaImpl.java
+++ 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ZonePartitionReplicaImpl.java
@@ -22,6 +22,7 @@ import static 
org.apache.ignite.internal.util.CompletableFutures.nullCompletedFu
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.internal.network.NetworkMessage;
 import 
org.apache.ignite.internal.placementdriver.message.PlacementDriverReplicaMessage;
+import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
 import org.apache.ignite.internal.replicator.listener.ReplicaListener;
 import org.apache.ignite.internal.replicator.message.ReplicaRequest;
@@ -82,4 +83,10 @@ public class ZonePartitionReplicaImpl implements Replica {
     public CompletableFuture<Void> shutdown() {
         return nullCompletedFuture();
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public void updatePeersAndLearners(PeersAndLearners peersAndLearners) {
+        raftClient.updateConfiguration(peersAndLearners);
+    }
 }
diff --git 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index 613f457ca3..39608b66bc 100644
--- 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++ 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -2112,8 +2112,7 @@ public class TableManager implements 
IgniteTablesInternal, IgniteComponent {
                             : union(pendingAssignmentsNodes, 
stableAssignments.nodes());
 
                     replicaMgr.replica(replicaGrpId)
-                            .thenApply(Replica::raftClient)
-                            .thenAccept(raftClient -> 
raftClient.updateConfiguration(fromAssignments(newAssignments)));
+                            .thenAccept(replica -> 
replica.updatePeersAndLearners(fromAssignments(newAssignments)));
                 }), ioExecutor);
     }
 
@@ -2446,8 +2445,7 @@ public class TableManager implements 
IgniteTablesInternal, IgniteComponent {
 
             // Update raft client peers and learners according to the actual 
assignments.
             return replicaMgr.replica(tablePartitionId)
-                    .thenApply(Replica::raftClient)
-                    .thenAccept(raftClient -> 
raftClient.updateConfiguration(fromAssignments(stableAssignments)));
+                    .thenAccept(replica -> 
replica.updatePeersAndLearners(fromAssignments(stableAssignments)));
         }));
     }
 

Reply via email to