From 47d9fe6422bdb90dcadbb5e88eb4dfbac6864f56 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Fri, 4 Nov 2022 15:10:08 +0800 Subject: [PATCH] fix(sync): do not vote when last-index < my cmt index --- source/libs/sync/src/syncRequestVote.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/libs/sync/src/syncRequestVote.c b/source/libs/sync/src/syncRequestVote.c index 074e4fca64..3b4acea582 100644 --- a/source/libs/sync/src/syncRequestVote.c +++ b/source/libs/sync/src/syncRequestVote.c @@ -47,6 +47,19 @@ static bool syncNodeOnRequestVoteLogOK(SSyncNode* pSyncNode, SyncRequestVote* pM SyncTerm myLastTerm = syncNodeGetLastTerm(pSyncNode); SyncIndex myLastIndex = syncNodeGetLastIndex(pSyncNode); + if (pMsg->lastLogIndex < pSyncNode->commitIndex) { + do { + char logBuf[128]; + snprintf(logBuf, sizeof(logBuf), + "logok:0, {my-lterm:%" PRIu64 ", my-lindex:%" PRId64 ", recv-lterm:%" PRIu64 ", recv-lindex:%" PRId64 + ", recv-term:%" PRIu64 "}", + myLastTerm, myLastIndex, pMsg->lastLogTerm, pMsg->lastLogIndex, pMsg->term); + syncNodeEventLog(pSyncNode, logBuf); + } while (0); + + return false; + } + if (myLastTerm == SYNC_TERM_INVALID) { do { char logBuf[128]; -- GitLab