Abhishek Chennaka has uploaded this change for review. ( http://gerrit.cloudera.org:8080/24287
Change subject: KUDU-3762 - Fix catchup deadlock on LMP mismatch ...................................................................... KUDU-3762 - Fix catchup deadlock on LMP mismatch A Raft leader could enter an infinite LMP mismatch loop if it erroneously marked a peer as unrecoverable (wal_catchup_possible = false). In this state, RequestForPeer() skips log-position negotiation and sends status updates at the log tip. If the peer is behind, it rejects the request, triggering an immediate retry loop that consumes CPU and prevents catchup. This patch fixes the deadlock by probing the LogCache when an LMP mismatch occurs. If the peer's reported index is found locally, wal_catchup_possible is reset to true, allowing the leader to resume normal catchup logic. Testing: - Added a test case to reproduce the issue - Verified the fix resolves the loop and allows the new master to become a voter. Change-Id: I00f4f840c21cc037a2aa6c023af168352fef0761 --- M src/kudu/consensus/consensus_queue.cc M src/kudu/mini-cluster/external_mini_cluster-test.cc 2 files changed, 155 insertions(+), 1 deletion(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/87/24287/1 -- To view, visit http://gerrit.cloudera.org:8080/24287 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I00f4f840c21cc037a2aa6c023af168352fef0761 Gerrit-Change-Number: 24287 Gerrit-PatchSet: 1 Gerrit-Owner: Abhishek Chennaka <[email protected]>
