sanpwc commented on code in PR #4545:
URL: https://github.com/apache/ignite-3/pull/4545#discussion_r1801020883
##########
modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/ClusterManagementGroupManager.java:
##########
@@ -773,21 +774,21 @@ private CompletableFuture<CmgRaftService>
startCmgRaftService(Set<String> nodeNa
assert serverPeer != null;
try {
- return raftManager
- .startRaftGroupNodeAndWaitNodeReadyFuture(
- raftNodeId(serverPeer),
- raftConfiguration,
- new CmgRaftGroupListener(
- clusterStateStorageMgr,
- logicalTopology,
- validationManager,
- this::onLogicalTopologyChanged,
- clusterIdStore
- ),
- this::onElectedAsLeader,
- raftGroupOptionsConfigurer
- )
- .thenApply(service -> new CmgRaftService(service,
clusterService, logicalTopology));
+ RaftGroupService service =
raftManager.startRaftGroupNodeAndWaitNodeReady(
+ raftNodeId(serverPeer),
+ raftConfiguration,
+ new CmgRaftGroupListener(
+ clusterStateStorageMgr,
+ logicalTopology,
+ validationManager,
+ this::onLogicalTopologyChanged,
+ clusterIdStore
+ ),
+ this::onElectedAsLeader,
+ raftGroupOptionsConfigurer
+ );
+
+ return completedFuture(new CmgRaftService(service, clusterService,
logicalTopology));
Review Comment:
Seems that there's no need in CompletableFuture in `private
CompletableFuture<CmgRaftService> startCmgRaftService` any longer. Please
create a follow-up ticket for an issues like that.
##########
modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java:
##########
@@ -228,40 +229,34 @@ void testAddLearners() {
PeersAndLearners configuration =
createConfiguration(List.of(follower), List.of());
- CompletableFuture<RaftGroupService> service1 = startRaftGroup(
- follower,
- configuration.peer(follower.consistentId()),
- configuration,
- new TestRaftGroupListener()
- );
+ RaftGroupService service1 =
+ startRaftGroup(follower,
configuration.peer(follower.consistentId()), configuration, new
TestRaftGroupListener());
Review Comment:
One param at a line I guess.
##########
modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java:
##########
@@ -498,13 +498,11 @@ private RaftGroupService startClient(TestInfo testInfo,
TestReplicationGroupId g
Marshaller commandsMarshaller = commandsMarshaller(clientNode);
- CompletableFuture<RaftGroupService> clientFuture = RaftGroupServiceImpl
- .start(groupId, clientNode, FACTORY, raftConfiguration,
initialMemberConf, true, executor, commandsMarshaller);
+ RaftGroupService clientFuture = RaftGroupServiceImpl
Review Comment:
"clientFuture" - It's no longer future.
##########
modules/metastorage/src/main/java/org/apache/ignite/internal/metastorage/impl/MetaStorageManagerImpl.java:
##########
@@ -1027,20 +1031,21 @@ private <T> CompletableFuture<T>
doWithOneOffRaftGroupService(
PeersAndLearners raftClientConfiguration,
Function<RaftGroupService, CompletableFuture<T>> action
) {
- return startOneOffRaftGroupService(raftClientConfiguration)
- .thenCompose(raftGroupService -> action.apply(raftGroupService)
- .whenComplete((res, ex) -> raftGroupService.shutdown())
- );
- }
-
- private CompletableFuture<RaftGroupService>
startOneOffRaftGroupService(PeersAndLearners newConfiguration) {
try {
- return raftMgr.startRaftGroupService(MetastorageGroupId.INSTANCE,
newConfiguration);
+ RaftGroupService raftGroupService =
startOneOffRaftGroupService(raftClientConfiguration);
+
+ return action.apply(raftGroupService)
+ .whenComplete((res, ex) -> raftGroupService.shutdown());
} catch (NodeStoppingException e) {
return failedFuture(e);
}
}
+ private RaftGroupService startOneOffRaftGroupService(PeersAndLearners
newConfiguration)
Review Comment:
The helper method has only one usage and is very simple inside. I'd rather
use `raftMgr.startRaftGroupService(MetastorageGroupId.INSTANCE,
newConfiguration);` instead of helper.
##########
modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java:
##########
@@ -409,19 +387,17 @@ void testChangePeersToAddLearnerToSameNodeAsPeer() throws
InterruptedException {
PeersAndLearners newConfiguration = createConfiguration(followers,
List.of(learner, newLearner));
- CompletableFuture<Void> changePeersFuture =
learnerService.thenCompose(s -> s.refreshAndGetLeaderWithTerm()
- .thenCompose(leaderWithTerm ->
s.changePeersAndLearnersAsync(newConfiguration, leaderWithTerm.term())
- ));
+ CompletableFuture<Void> changePeersFuture =
learnerService.refreshAndGetLeaderWithTerm()
+ .thenCompose(leaderWithTerm ->
learnerService.changePeersAndLearnersAsync(newConfiguration,
leaderWithTerm.term()));
assertThat(changePeersFuture, willCompleteSuccessfully());
var newLearnerListener = new TestRaftGroupListener();
- CompletableFuture<RaftGroupService> newLearnerService = startRaftGroup(
+ startRaftGroup(
newLearner,
newConfiguration.learner(newLearner.consistentId()), newConfiguration,
newLearnerListener
Review Comment:
Same as above. One at a line. Up to you though.
##########
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:
What about
```
return service.subscribeLeader(leaderElectionListener)
.handle((v, e) -> {
if (e != null) {
LOG.error("Unable to register
MetaStorageLeaderElectionListener", e);
}
return service;
});
```
?
--
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]