JAkutenshi commented on code in PR #4545:
URL: https://github.com/apache/ignite-3/pull/4545#discussion_r1801074573


##########
modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/MetaStorageManagerImpl.java:
##########
@@ -462,28 +464,30 @@ private CompletableFuture<? extends RaftGroupService> 
startRaftNode(
                 }
         );
 
-        serviceFuture
-                .thenAccept(service -> service.subscribeLeader(new 
MetaStorageLeaderElectionListener(
-                        busyLock,
-                        clusterService,
-                        logicalTopologyService,
-                        metaStorageSvcFut,
-                        learnerManager,
-                        clusterTime,
-                        // We use the "deployWatchesFuture" to guarantee that 
the Configuration Manager will be started
-                        // when the underlying code tries to read Meta Storage 
configuration. This is a consequence of having a circular
-                        // dependency between these two components.
-                        deployWatchesFuture.thenApply(v -> 
localMetaStorageConfiguration),
-                        electionListeners,
-                        this::peersChangeStateExists
-                )))
-                .whenComplete((v, e) -> {
+        LeaderElectionListener leaderElectionListener = new 
MetaStorageLeaderElectionListener(
+                busyLock,
+                clusterService,
+                logicalTopologyService,
+                metaStorageSvcFut,
+                learnerManager,
+                clusterTime,
+                // We use the "deployWatchesFuture" to guarantee that the 
Configuration Manager will be started
+                // when the underlying code tries to read Meta Storage 
configuration. This is a consequence of having a circular
+                // dependency between these two components.
+                deployWatchesFuture.thenApply(v -> 
localMetaStorageConfiguration),
+                electionListeners,
+                this::peersChangeStateExists
+        );
+
+        return completedFuture(service)

Review Comment:
   Ha, I remember this place and I did at like you do first. But then there are 
tonns of tests that doesn't mock `subscribeLeader` that leads to `null` instead 
of any future objects ([failed build 
example](https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/8542386?expandBuildDeploymentsSection=false&hideTestsFromDependencies=false&hideProblemsFromDependencies=false&expandCode+Inspection=true&expandBuildChangesSection=true&expandBuildProblemsSection=true)).
 So, if there will be a future as the result in any case, I decided to left 
future wrapping over the service there. May be the better way is to place mocks 
in all of these cases.. if it is, so I'd better to do a follow up ticket. 



-- 
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: notifications-unsubscr...@ignite.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to