vldpyatkov commented on code in PR #2255: URL: https://github.com/apache/ignite-3/pull/2255#discussion_r1244864880
########## modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java: ########## @@ -347,6 +356,83 @@ public void testNotificationToPlacementDriverAboutMajorityLoss() throws Exceptio stopReplicationGroup(GROUP_ID, grpNodes); } + @Test + @Disabled("IGNITE-19120 Raft client should get leader metadata along while getting leader itself") + public void testLeaseGrantWhenMajorityLoss() throws Exception { + Set<String> grpNodes = chooseRandomNodes(3); + + log.info("Replication group is based on {}", grpNodes); + log.info("Placement driver driver is based on {}", placementDriverNodeNames); + + var raftClientFut = createReplicationGroup(GROUP_ID, grpNodes); + + var raftClient = raftClientFut.get(); + + raftClient.refreshLeader().get(); + + var leaderNodeName = raftClient.leader().consistentId(); + + var clusterService = clusterServices.get(randomPlacementDriverNode(Set.of())); + + var leaseGrantMsgFut = clusterService.messagingService().invoke( + clusterService.topologyService().getByConsistentId(leaderNodeName), + PLACEMENT_DRIVER_MESSAGES_FACTORY.leaseGrantedMessage() + .groupId(GROUP_ID) + .leaseStartTimeLong(clock.nowLong()) + .leaseExpirationTimeLong(new HybridTimestamp(clock.now().getPhysical() + 10_000, 0).longValue()) + .build(), + 2_000 + ); + + assertThat(leaseGrantMsgFut, willCompleteSuccessfully()); + + LeaseGrantedMessageResponse leaseGrantResp = (LeaseGrantedMessageResponse) leaseGrantMsgFut.get(); + + assertTrue(leaseGrantResp.accepted()); + assertNull(leaseGrantResp.redirectProposal()); + + var grpNodesToStop = grpNodes.stream().filter(n -> !n.equals(leaderNodeName)).collect(toSet()); + + log.info( + "All nodes of the replication group will be unavailable except leader [leader={}, others={}]", + leaderNodeName, + grpNodesToStop + ); + + for (String nodeToStop : grpNodesToStop) { + var srvc = clusterServices.get(nodeToStop); + + srvc.beforeNodeStop(); + srvc.stop(); + } + + clusterService = clusterServices.get(randomPlacementDriverNode(grpNodesToStop)); + + log.info( + "Placement driver node tries to prolong a lease [pdNode={}, grpLeader={}]", + clusterService.topologyService().localMember(), + leaderNodeName + ); + + var prolongLeaseFut = clusterService.messagingService().invoke( + clusterService.topologyService().getByConsistentId(leaderNodeName), + PLACEMENT_DRIVER_MESSAGES_FACTORY.leaseGrantedMessage() + .groupId(GROUP_ID) + .leaseStartTimeLong(clock.nowLong()) + .leaseExpirationTimeLong(new HybridTimestamp(clock.now().getPhysical() + 10_000, 0).longValue()) + .build(), + 1_000 + ); + + Thread.sleep(2_000); Review Comment: It is a disable test. When the corresponding ticket be implemented, it will be able to rewrite. -- 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