szetszwo commented on code in PR #1168:
URL: https://github.com/apache/ratis/pull/1168#discussion_r1806697995


##########
ratis-server/src/main/java/org/apache/ratis/server/impl/SnapshotInstallationHandler.java:
##########
@@ -186,8 +189,9 @@ private InstallSnapshotReplyProto 
checkAndInstallSnapshot(InstallSnapshotRequest
         // have a lot of requests
         if (state.getLog().getLastCommittedIndex() >= lastIncludedIndex) {
           nextChunkIndex.set(snapshotChunkRequest.getRequestIndex() + 1);
-          return toInstallSnapshotReplyProto(leaderId, getMemberId(),
+          reply =  toInstallSnapshotReplyProto(leaderId, getMemberId(),

Review Comment:
   ```java
   final InstallSnapshotReplyProto reply = 
toInstallSnapshotReplyProto(leaderId, getMemberId(),
   ```



##########
ratis-server/src/main/java/org/apache/ratis/server/impl/SnapshotInstallationHandler.java:
##########
@@ -210,25 +214,27 @@ private InstallSnapshotReplyProto 
checkAndInstallSnapshot(InstallSnapshotRequest
     if (snapshotChunkRequest.getDone()) {
       LOG.info("{}: successfully install the entire snapshot-{}", 
getMemberId(), lastIncludedIndex);
     }
-    return toInstallSnapshotReplyProto(leaderId, getMemberId(),
-        currentTerm, snapshotChunkRequest.getRequestIndex(), 
InstallSnapshotResult.SUCCESS);
+    return future.thenApply(dummy -> toInstallSnapshotReplyProto(leaderId, 
getMemberId(),
+        currentTerm, snapshotChunkRequest.getRequestIndex(), 
InstallSnapshotResult.SUCCESS));
   }
 
-  private InstallSnapshotReplyProto notifyStateMachineToInstallSnapshot(
+  private CompletableFuture<InstallSnapshotReplyProto> 
notifyStateMachineToInstallSnapshot(
       InstallSnapshotRequestProto request, RaftPeerId leaderId) throws 
IOException {
     final long currentTerm;
     final long leaderTerm = request.getLeaderTerm();
     final TermIndex firstAvailableLogTermIndex = TermIndex.valueOf(
         request.getNotification().getFirstAvailableTermIndex());
     final long firstAvailableLogIndex = firstAvailableLogTermIndex.getIndex();
+    final CompletableFuture<Void> future;
+    final InstallSnapshotReplyProto replyProto;

Review Comment:
   Similar to before, move down the declaration, create the reply and return 
future.thanApply(..).



##########
ratis-server/src/main/java/org/apache/ratis/server/impl/SnapshotInstallationHandler.java:
##########
@@ -156,21 +157,23 @@ private InstallSnapshotReplyProto 
installSnapshotImpl(InstallSnapshotRequestProt
     return failedReply;
   }
 
-  private InstallSnapshotReplyProto 
checkAndInstallSnapshot(InstallSnapshotRequestProto request,
+  private CompletableFuture<InstallSnapshotReplyProto> 
checkAndInstallSnapshot(InstallSnapshotRequestProto request,
       RaftPeerId leaderId) throws IOException {
     final long currentTerm;
     final long leaderTerm = request.getLeaderTerm();
     final InstallSnapshotRequestProto.SnapshotChunkProto snapshotChunkRequest 
= request.getSnapshotChunk();
     final TermIndex lastIncluded = 
TermIndex.valueOf(snapshotChunkRequest.getTermIndex());
     final long lastIncludedIndex = lastIncluded.getIndex();
+    final CompletableFuture<Void> future;
+    final InstallSnapshotReplyProto reply;

Review Comment:
   Remove `reply` and declare it in the code below.



##########
ratis-server/src/main/java/org/apache/ratis/server/impl/SnapshotInstallationHandler.java:
##########
@@ -210,25 +214,27 @@ private InstallSnapshotReplyProto 
checkAndInstallSnapshot(InstallSnapshotRequest
     if (snapshotChunkRequest.getDone()) {
       LOG.info("{}: successfully install the entire snapshot-{}", 
getMemberId(), lastIncludedIndex);
     }
-    return toInstallSnapshotReplyProto(leaderId, getMemberId(),
-        currentTerm, snapshotChunkRequest.getRequestIndex(), 
InstallSnapshotResult.SUCCESS);
+    return future.thenApply(dummy -> toInstallSnapshotReplyProto(leaderId, 
getMemberId(),
+        currentTerm, snapshotChunkRequest.getRequestIndex(), 
InstallSnapshotResult.SUCCESS));

Review Comment:
   Create the reply first since it does not have to wait for the shutdown.
   ```java
       final InstallSnapshotReplyProto reply = 
toInstallSnapshotReplyProto(leaderId, getMemberId(),
           currentTerm, snapshotChunkRequest.getRequestIndex(), 
InstallSnapshotResult.SUCCESS);
       return future.thenApply(dummy -> reply);
   ```



##########
ratis-server/src/main/java/org/apache/ratis/server/impl/SnapshotInstallationHandler.java:
##########
@@ -341,21 +349,23 @@ private InstallSnapshotReplyProto 
notifyStateMachineToInstallSnapshot(
         server.getStateMachine().event().notifySnapshotInstalled(
             InstallSnapshotResult.SNAPSHOT_INSTALLED, latestInstalledIndex, 
server.getPeer());
         installedIndex.set(latestInstalledIndex);
-        return toInstallSnapshotReplyProto(leaderId, getMemberId(),
+        replyProto = toInstallSnapshotReplyProto(leaderId, getMemberId(),
             currentTerm, InstallSnapshotResult.SNAPSHOT_INSTALLED, 
latestInstalledSnapshotTermIndex.getIndex());
+        return future.thenApply(dummy -> replyProto);
       }
 
       // Otherwise, Snapshot installation is in progress.
       if (LOG.isDebugEnabled()) {
         LOG.debug("{}: InstallSnapshot notification result: {}", getMemberId(),
             InstallSnapshotResult.IN_PROGRESS);
       }
-      return toInstallSnapshotReplyProto(leaderId, getMemberId(),
+      replyProto = toInstallSnapshotReplyProto(leaderId, getMemberId(),
           currentTerm, InstallSnapshotResult.IN_PROGRESS);
+      return future.thenApply(dummy -> replyProto);
     }
   }
 
-  private RoleInfoProto getRoleInfoProto(RaftPeer leader) {
+  private RoleInfoProto getRoleInfoProto (RaftPeer leader){

Review Comment:
   Please revert this whitespace change.



-- 
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