[ 
https://issues.apache.org/jira/browse/RATIS-2008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17808878#comment-17808878
 ] 

Ivan Andika commented on RATIS-2008:
------------------------------------

> Why the leader sends PRE_VOTE? Is this the case that the leader has stepped 
>down and then starts an election?

Yes, the leader stepped down and then starts another election with higher term 
since it has the highest priority. I encountered it recently while testing 
streaming write pipeline. In CreatePipelineCommand, the suggested leader has 
higher priority. 

> If the leader has stepped down, the follower will time out and then it will 
> accept the PRE_VOTE.

Yes, currently the follower will wait until its current leader is invalid / 
isCurrentLeaderValid (not heard after min.rpc.timeout). After, the leader is 
deemed invalid, it should accept the PRE_VOTE. The case where the follower 
reject the PRE_VOTE looked like it's within the min.rpc.timeout, so the 
follower still believes it has a valid leader. 

To give more context, below are the logs for the Raft peers in the pipeline.

This is the leader's (higher priority peer) log (the client write operation 
encountered NotLeaderException).
{code:java}
# Stepped down at term 8
2024-01-18 13:44:39,801 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] WARN 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl: Lost 
leadership on term: 8. Election timeout: 5200ms. In charge for: 6230370ms. 
Conf: 140433: peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:39,801 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] WARN 
org.apache.ratis.server.RaftServer$Division: Follower 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->e46cc30b-13ca-4778-b856-e84b0677493d(c142523,m142525,n142526,
 caughtUp=true, lastRpcSendTime=6507, lastRpcResponseTime=6506)
2024-01-18 13:44:39,801 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] WARN 
org.apache.ratis.server.RaftServer$Division: Follower 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->a40059d4-a1ba-4138-ad25-9fdaf98a1f8e(c142523,m142525,n142526,
 caughtUp=true, lastRpcSendTime=6507, lastRpcResponseTime=6506)
2024-01-18 13:44:39,802 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] INFO 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137: changes role from    
LEADER to FOLLOWER at term 8 for StepDownReason:LOST_MAJORITY_HEARTBEATS
2024-01-18 13:44:39,802 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] INFO 
org.apache.ratis.server.impl.RoleInfo: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: 
shutdown c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl
2024-01-18 13:44:39,802 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderStateImpl] INFO 
org.apache.ratis.server.impl.PendingRequests: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-PendingRequests: 
sendNotLeaderResponses

# GC Issue
2024-01-18 13:44:39,804 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->a40059d4-a1ba-4138-ad25-9fdaf98a1f8e-GrpcLogAppender-LogAppenderDaemon]
 WARN org.apache.ratis.grpc.server.GrpcLogAppender: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->a40059d4-a1ba-4138-ad25-9fdaf98a1f8e-GrpcLogAppender:
 Wait interrupted by java.lang.InterruptedException
2024-01-18 13:44:39,805 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->e46cc30b-13ca-4778-b856-e84b0677493d-GrpcLogAppender-LogAppenderDaemon]
 WARN org.apache.ratis.grpc.server.GrpcLogAppender: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->e46cc30b-13ca-4778-b856-e84b0677493d-GrpcLogAppender:
 Wait interrupted by java.lang.InterruptedException
2024-01-18 13:44:39,806 [grpc-default-executor-270] INFO 
org.apache.ratis.grpc.server.GrpcLogAppender: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137->e46cc30b-13ca-4778-b856-e84b0677493d-AppendLogResponseHandler:
 follower responses appendEntries COMPLETED
2024-01-18 13:44:39,806 [JvmPauseMonitor0] WARN 
org.apache.ratis.util.JvmPauseMonitor: 
JvmPauseMonitor-c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: Detected pause in JVM or 
host machine approximately 4.231s without any GCs.
2024-01-18 13:44:39,807 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-F0D3CB812363-FollowerState] WARN 
org.apache.ratis.server.impl.FollowerState: Unexpected long sleep: sleep 5182ms 
but took extra 4391710573ns (> threshold = 300ms)

# No leader election since stepped down recently
2024-01-18 13:44:44,927 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.FollowerState: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState: Skipping 
leader election since it stepped down recently (elapsed = 5116ms < waitTime = 
10s)

# Reject pre-vote due to higher priority
2024-01-18 13:44:45,176 [grpc-default-executor-273] INFO 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137: receive 
requestVote(PRE_VOTE, a40059d4-a1ba-4138-ad25-9fdaf98a1f8e, group-059247EC8137, 
8, (t:8, i:142525))
2024-01-18 13:44:45,177 [grpc-default-executor-273] INFO 
org.apache.ratis.server.impl.VoteContext: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FOLLOWER: reject 
PRE_VOTE from a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: our priority 1 > 
candidate's priority 0
2024-01-18 13:44:45,177 [grpc-default-executor-273] INFO 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137 replies to PRE_VOTE 
vote request: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e<-c7e3fa47-df62-4883-8d6e-50c3b6a9b94c#0:FAIL-t8.
 Peer's state: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137:t8, 
leader=null, voted=c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, 
raftlog=Memoized:c7e3fa47-df62-488

# Election for term 9
2024-01-18 13:44:50,117 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.FollowerState: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState: change 
to CANDIDATE, lastRpcElapsedTime:10307068320ns, electionTimeout:5190ms
2024-01-18 13:44:50,117 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: 
shutdown c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState
2024-01-18 13:44:50,118 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137: changes role from  
FOLLOWER to CANDIDATE at term 8 for changeToCandidate
2024-01-18 13:44:50,118 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServerConfigKeys: 
raft.server.leaderelection.pre-vote = true (default)
2024-01-18 13:44:50,118 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: 
start c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10
2024-01-18 13:44:50,119 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
PRE_VOTE round 0: submit vote requests at term 8 for 140433: 
peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10: 
PRE_VOTE PASSED received 2 response(s) and 0 exception(s):
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 0: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-e46cc30b-13ca-4778-b856-e84b0677493d#0:FAIL-t8
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 1: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-a40059d4-a1ba-4138-ad25-9fdaf98a1f8e#0:OK-t8
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
PRE_VOTE round 0: result PASSED
2024-01-18 13:44:50,124 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
ELECTION round 0: submit vote requests at term 9 for 140433: 
peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10: 
PRE_VOTE PASSED received 2 response(s) and 0 exception(s):
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 0: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-e46cc30b-13ca-4778-b856-e84b0677493d#0:FAIL-t8
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 1: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-a40059d4-a1ba-4138-ad25-9fdaf98a1f8e#0:OK-t8
2024-01-18 13:44:50,123 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
PRE_VOTE round 0: result PASSED
2024-01-18 13:44:50,124 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
ELECTION round 0: submit vote requests at term 9 for 140433: 
peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:50,127 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10: 
ELECTION PASSED received 1 response(s) and 0 exception(s):
2024-01-18 13:44:50,127 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 0: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-e46cc30b-13ca-4778-b856-e84b0677493d#0:OK-t9
2024-01-18 13:44:50,127 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.LeaderElection: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10 
ELECTION round 0: result PASSED
2024-01-18 13:44:50,127 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.impl.RoleInfo: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: 
shutdown 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10
2024-01-18 13:44:50,127 
[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137-LeaderElection10] INFO 
org.apache.ratis.server.RaftServer$Division: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c@group-059247EC8137: changes role from 
CANDIDATE to LEADER at term 9 for changeToLeader {code}
This is the follower's log that rejected the pre-vote from the leader (the case 
to prevent in this patch)
{code:java}
# Reject pre-vote although the leader is the same
2024-01-18 13:44:50,122 [grpc-default-executor-100] INFO 
org.apache.ratis.server.RaftServer$Division: 
e46cc30b-13ca-4778-b856-e84b0677493d@group-059247EC8137: receive 
requestVote(PRE_VOTE, c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, group-059247EC8137, 
8, (t:8, i:142525))
2024-01-18 13:44:50,123 [grpc-default-executor-100] INFO 
org.apache.ratis.server.impl.VoteContext: 
e46cc30b-13ca-4778-b856-e84b0677493d@group-059247EC8137-FOLLOWER: reject 
PRE_VOTE from c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: this server is a follower 
and still has a valid leader c7e3fa47-df62-4883-8d6e-50c3b6a9b94c {code}
Another follower was also trying to do PRE_VOTE, but since it's rejected by the 
higher-priority peer / previous leader (see RATIS-1033), so it cannot pass the 
vote. During that time, I think no leader can be elected until the 
higher-priority peer start another election which is at least the leader 
wait.time (10s). We might want to fix this as well to make election more timely 
when there are higher priority peer.
{code:java}
2024-01-18 13:44:39,805 [grpc-default-executor-31] INFO 
org.apache.ratis.grpc.server.GrpcServerProtocolService: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: Completed APPEND_ENTRIES, lastRequest: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c->a40059d4-a1ba-4138-ad25-9fdaf98a1f8e#7024-t8,previous=(t:8,
 i:142524),leaderCommit=142523,initializing? false,entries: size=1, first=(t:8, 
i:142525), METADATAENTRY(c:142523)
2024-01-18 13:44:39,806 [grpc-default-executor-31] INFO 
org.apache.ratis.grpc.server.GrpcServerProtocolService: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: Completed APPEND_ENTRIES, lastReply: null
2024-01-18 13:44:40,094 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.FollowerState: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState: change 
to CANDIDATE, lastRpcElapsedTime:6800576008ns, electionTimeout:5012ms
2024-01-18 13:44:40,095 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
shutdown a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:40,095 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: changes role from  
FOLLOWER to CANDIDATE at term 8 for changeToCandidate
2024-01-18 13:44:40,095 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServerConfigKeys: 
raft.server.leaderelection.pre-vote = true (default)
2024-01-18 13:44:40,095 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
start a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8
2024-01-18 13:44:40,096 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: change Leader from 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c to null at term 8 for PRE_VOTE
2024-01-18 13:44:40,096 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8 
PRE_VOTE round 0: submit vote requests at term 8 for 140433: 
peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8: 
PRE_VOTE REJECTED received 2 response(s) and 0 exception(s):
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 0: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e<-c7e3fa47-df62-4883-8d6e-50c3b6a9b94c#0:FAIL-t8
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 1: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e<-e46cc30b-13ca-4778-b856-e84b0677493d#0:OK-t8
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8 
PRE_VOTE round 0: result REJECTED
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: changes role from 
CANDIDATE to FOLLOWER at term 8 for REJECTED
2024-01-18 13:44:40,105 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
shutdown a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8
2024-01-18 13:44:40,107 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection8] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
start a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:45,171 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.FollowerState: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState: change 
to CANDIDATE, lastRpcElapsedTime:5064234355ns, electionTimeout:5064ms
2024-01-18 13:44:45,171 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
shutdown a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:45,171 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: changes role from  
FOLLOWER to CANDIDATE at term 8 for changeToCandidate
2024-01-18 13:44:45,171 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.RaftServerConfigKeys: 
raft.server.leaderelection.pre-vote = true (default)
2024-01-18 13:44:45,171 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
start a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9
2024-01-18 13:44:45,173 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9 
PRE_VOTE round 0: submit vote requests at term 8 for 140433: 
peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9: 
PRE_VOTE REJECTED received 2 response(s) and 0 exception(s):
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 0: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e<-c7e3fa47-df62-4883-8d6e-50c3b6a9b94c#0:FAIL-t8
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.LeaderElection:   Response 1: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e<-e46cc30b-13ca-4778-b856-e84b0677493d#0:OK-t8
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.LeaderElection: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9 
PRE_VOTE round 0: result REJECTED
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: changes role from 
CANDIDATE to FOLLOWER at term 8 for REJECTED
2024-01-18 13:44:45,176 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
shutdown a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9
2024-01-18 13:44:45,177 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-LeaderElection9] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
start a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:50,121 [grpc-default-executor-30] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: receive 
requestVote(PRE_VOTE, c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, group-059247EC8137, 
8, (t:8, i:142525))
2024-01-18 13:44:50,121 [grpc-default-executor-30] INFO 
org.apache.ratis.server.impl.VoteContext: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FOLLOWER: accept 
PRE_VOTE from c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: our priority 0 <= 
candidate's priority 1
2024-01-18 13:44:50,121 [grpc-default-executor-30] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137 replies to PRE_VOTE 
vote request: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-a40059d4-a1ba-4138-ad25-9fdaf98a1f8e#0:OK-t8.
 Peer's state: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137:t8, 
leader=null, voted=c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, 
raftlog=Memoized:a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-SegmentedRaftLog:OPENED:c142523,
 conf=140433: peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:50,124 [grpc-default-executor-30] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: receive 
requestVote(ELECTION, c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, group-059247EC8137, 
9, (t:8, i:142525))
2024-01-18 13:44:50,124 [grpc-default-executor-30] INFO 
org.apache.ratis.server.impl.VoteContext: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FOLLOWER: accept 
ELECTION from c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: our priority 0 <= 
candidate's priority 1
2024-01-18 13:44:50,124 [grpc-default-executor-30] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: changes role from  
FOLLOWER to FOLLOWER at term 9 for 
candidate:c7e3fa47-df62-4883-8d6e-50c3b6a9b94c
2024-01-18 13:44:50,124 [grpc-default-executor-30] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
shutdown a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:50,124 [grpc-default-executor-30] INFO 
org.apache.ratis.server.impl.RoleInfo: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e: 
start a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState
2024-01-18 13:44:50,124 
[a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState] INFO 
org.apache.ratis.server.impl.FollowerState: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-FollowerState was 
interrupted
2024-01-18 13:44:50,126 [grpc-default-executor-30] INFO 
org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137 replies to ELECTION 
vote request: 
c7e3fa47-df62-4883-8d6e-50c3b6a9b94c<-a40059d4-a1ba-4138-ad25-9fdaf98a1f8e#0:OK-t9.
 Peer's state: a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137:t9, 
leader=null, voted=c7e3fa47-df62-4883-8d6e-50c3b6a9b94c, 
raftlog=Memoized:a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137-SegmentedRaftLog:OPENED:c142523,
 conf=140433: peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null
2024-01-18 13:44:50,131 [a40059d4-a1ba-4138-ad25-9fdaf98a1f8e-server-thread33] 
INFO 
org.apache.hadoop.ozone.container.common.transport.server.ratis.XceiverServerRatis:
 Leader change notification received for group: group-059247EC8137 with new 
leaderId: c7e3fa47-df62-4883-8d6e-50c3b6a9b94c
2024-01-18 13:44:50,131 [a40059d4-a1ba-4138-ad25-9fdaf98a1f8e-server-thread33] 
INFO org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: change Leader from 
null to c7e3fa47-df62-4883-8d6e-50c3b6a9b94c at term 9 for appendEntries, 
leader elected after 10034ms
2024-01-18 13:44:50,131 [a40059d4-a1ba-4138-ad25-9fdaf98a1f8e-server-thread33] 
INFO org.apache.ratis.server.RaftServer$Division: 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e@group-059247EC8137: set configuration 
142526: peers:[c7e3fa47-df62-4883-8d6e-50c3b6a9b94c|10.80.170.67:9856, 
e46cc30b-13ca-4778-b856-e84b0677493d|10.80.170.74:9856, 
a40059d4-a1ba-4138-ad25-9fdaf98a1f8e|10.80.170.72:9856]|listeners:[], old=null 
{code}
 

 

> Follower should recognize candidate if the candidate is the same peer as the 
> current recognized leader
> ------------------------------------------------------------------------------------------------------
>
>                 Key: RATIS-2008
>                 URL: https://issues.apache.org/jira/browse/RATIS-2008
>             Project: Ratis
>          Issue Type: Improvement
>          Components: election
>            Reporter: Ivan Andika
>            Assignee: Ivan Andika
>            Priority: Minor
>
> During pre-vote, some follower reject the PRE_VOTE request from a candidate 
> although the candidate has the same peer ID as the current leader. 
> {code:java}
> 2024-01-18 13:44:50,123 [grpc-default-executor-100] INFO 
> org.apache.ratis.server.impl.VoteContext: 
> e46cc30b-13ca-4778-b856-e84b0677493d@group-059247EC8137-FOLLOWER: reject 
> PRE_VOTE from c7e3fa47-df62-4883-8d6e-50c3b6a9b94c: this server is a follower 
> and still has a valid leader c7e3fa47-df62-4883-8d6e-50c3b6a9b94c
> {code}
> It might be a good idea to addd another check so that if the candidate has 
> the same peer ID as the follower's current recognized leader, we approve the 
> PRE_VOTE request.
> Note: The optimization might be marginal since recognized leader will expire 
> after min.rpc.timeout (150ms) anyway.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to