From 752e54cb70c8a306dfd7e00a92b0f76771cc5b91 Mon Sep 17 00:00:00 2001 From: "guoan.chen" Date: Tue, 4 Jun 2024 12:03:11 +0800 Subject: [PATCH 1/3] When the leader gracefully closes, the follower can re-enter the election more quickly, instead of waiting to detect the RecordingSignal.STOP signal in the slowTickWork method. --- .../main/java/io/aeron/cluster/ConsensusModuleAgent.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java index 8f7a842c5a..743116e693 100644 --- a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java +++ b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java @@ -2227,10 +2227,13 @@ private int consensusWork(final long timestamp, final long nowNs) { final long limit = null != appendPosition ? appendPosition.get() : logRecordingStopPosition; final int count = logAdapter.poll(Math.min(notifiedCommitPosition, limit)); - if (0 == count && logAdapter.isImageClosed()) + if (0 == count) { final boolean isEos = logAdapter.isLogEndOfStream(); - enterElection(isEos, "log disconnected from leader: eos=" + isEos); + if(isEos || logAdapter.isImageClosed()) + { + enterElection(isEos, "log disconnected from leader: eos=" + isEos); + } return 1; } From ae22ab619a43db37b6cd04412553135dd39cfa63 Mon Sep 17 00:00:00 2001 From: "guoan.chen" Date: Tue, 4 Jun 2024 15:00:15 +0800 Subject: [PATCH 2/3] tidy up --- .../src/main/java/io/aeron/cluster/ConsensusModuleAgent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java index 743116e693..e8340a53ff 100644 --- a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java +++ b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java @@ -2230,7 +2230,7 @@ private int consensusWork(final long timestamp, final long nowNs) if (0 == count) { final boolean isEos = logAdapter.isLogEndOfStream(); - if(isEos || logAdapter.isImageClosed()) + if (isEos || logAdapter.isImageClosed()) { enterElection(isEos, "log disconnected from leader: eos=" + isEos); } From 9dcacf15784915f698a3e98d650c95eab5c12ae1 Mon Sep 17 00:00:00 2001 From: "guoan.chen" Date: Tue, 4 Jun 2024 17:49:13 +0800 Subject: [PATCH 3/3] fix --- .../src/main/java/io/aeron/cluster/ConsensusModuleAgent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java index e8340a53ff..6acfee515e 100644 --- a/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java +++ b/aeron-cluster/src/main/java/io/aeron/cluster/ConsensusModuleAgent.java @@ -2233,8 +2233,8 @@ private int consensusWork(final long timestamp, final long nowNs) if (isEos || logAdapter.isImageClosed()) { enterElection(isEos, "log disconnected from leader: eos=" + isEos); + return 1; } - return 1; } commitPosition.proposeMaxOrdered(logAdapter.position());