From c7e22fe1081cc4f93cf52e965bba091512cad6d4 Mon Sep 17 00:00:00 2001 From: Deepthi Devaki Akkoorath Date: Mon, 10 Oct 2022 09:21:43 +0200 Subject: [PATCH 1/2] test(raft): add info to assert failure message (cherry picked from commit 80a39d4cb5da14d6a529037b643951d92ccf6662) --- .../java/io/atomix/raft/ControllableRaftContexts.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/atomix/cluster/src/test/java/io/atomix/raft/ControllableRaftContexts.java b/atomix/cluster/src/test/java/io/atomix/raft/ControllableRaftContexts.java index be4eeb0794d5..6d6b970782f2 100644 --- a/atomix/cluster/src/test/java/io/atomix/raft/ControllableRaftContexts.java +++ b/atomix/cluster/src/test/java/io/atomix/raft/ControllableRaftContexts.java @@ -513,7 +513,13 @@ private void assertNoGapsInLog(final MemberId memberId) { } public void assertAllMembersAreReady() { - raftServers.values().forEach(raft -> assertThat(raft.getState()).isEqualTo(State.READY)); + raftServers + .values() + .forEach( + raft -> + assertThat(raft.getState()) + .describedAs("Raft %s must be ready".formatted(raft.getName())) + .isEqualTo(State.READY)); } public void assertNoJournalAppendErrors() { From 31996457b30275a871fb0f7597418ca301ae4368 Mon Sep 17 00:00:00 2001 From: Deepthi Devaki Akkoorath Date: Mon, 10 Oct 2022 09:22:18 +0200 Subject: [PATCH 2/2] fix(raft): do not handle response if the role is closed (cherry picked from commit 11a58e45538b8fc51222eb2e5760bd8897a74fda) --- .../io/atomix/raft/roles/LeaderAppender.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/atomix/cluster/src/main/java/io/atomix/raft/roles/LeaderAppender.java b/atomix/cluster/src/main/java/io/atomix/raft/roles/LeaderAppender.java index 543c0dc10519..4fd2fe3ccc83 100644 --- a/atomix/cluster/src/main/java/io/atomix/raft/roles/LeaderAppender.java +++ b/atomix/cluster/src/main/java/io/atomix/raft/roles/LeaderAppender.java @@ -208,16 +208,16 @@ private void sendAppendRequest(final RaftMemberContext member, final AppendReque .append(member.getMember().memberId(), request) .whenCompleteAsync( (response, error) -> { - // Complete the append to the member. - final long appendLatency = System.currentTimeMillis() - timestamp; - metrics.appendComplete(appendLatency, member.getMember().memberId().id()); - if (!request.entries().isEmpty()) { - member.completeAppend(appendLatency); - } else { - member.completeAppend(); - } - if (open) { + // Complete the append to the member. + final long appendLatency = System.currentTimeMillis() - timestamp; + metrics.appendComplete(appendLatency, member.getMember().memberId().id()); + if (!request.entries().isEmpty()) { + member.completeAppend(appendLatency); + } else { + member.completeAppend(); + } + if (error == null) { log.trace("Received {} from {}", response, member.getMember().memberId()); handleAppendResponse(member, request, response, timestamp); @@ -300,10 +300,10 @@ private void sendConfigureRequest( .configure(member.getMember().memberId(), request) .whenCompleteAsync( (response, error) -> { - // Complete the configure to the member. - member.completeConfigure(); - if (open) { + // Complete the configure to the member. + member.completeConfigure(); + if (error == null) { log.trace("Received {} from {}", response, member.getMember().memberId()); handleConfigureResponse(member, request, response, timestamp); @@ -413,10 +413,10 @@ private void sendInstallRequest(final RaftMemberContext member, final InstallReq .install(member.getMember().memberId(), request) .whenCompleteAsync( (response, error) -> { - // Complete the install to the member. - member.completeInstall(); - if (open) { + // Complete the install to the member. + member.completeInstall(); + if (error == null) { log.trace("Received {} from {}", response, member.getMember().memberId()); handleInstallResponse(member, request, response, timestamp);