From 1f329f30252274fbd48bca25cbdf4f368a0f4a16 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Fri, 4 Nov 2022 10:41:36 +0800 Subject: [PATCH 1/2] refactor(sync): delete assert --- source/libs/sync/src/syncRaftLog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/libs/sync/src/syncRaftLog.c b/source/libs/sync/src/syncRaftLog.c index 23d076cfbc..04228d4759 100644 --- a/source/libs/sync/src/syncRaftLog.c +++ b/source/libs/sync/src/syncRaftLog.c @@ -219,7 +219,7 @@ static int32_t raftLogAppendEntry(struct SSyncLogStore* pLogStore, SSyncRaftEntr pEntry->index, err, err, errStr, sysErr, sysErrStr); syncNodeErrorLog(pData->pSyncNode, logBuf); - ASSERT(0); + // ASSERT(0); return -1; } pEntry->index = index; @@ -327,7 +327,7 @@ static int32_t raftLogTruncate(struct SSyncLogStore* pLogStore, SyncIndex fromIn sError("vgId:%d, wal truncate error, from-index:%" PRId64 ", err:%d %X, msg:%s, syserr:%d, sysmsg:%s", pData->pSyncNode->vgId, fromIndex, err, err, errStr, sysErr, sysErrStr); - ASSERT(0); + // ASSERT(0); } // event log @@ -376,6 +376,7 @@ int32_t raftLogUpdateCommitIndex(SSyncLogStore* pLogStore, SyncIndex index) { pData->pSyncNode->vgId, index, err, err, errStr, sysErr, sysErrStr); ASSERT(0); + return -1; } return 0; } From 47d9fe6422bdb90dcadbb5e88eb4dfbac6864f56 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Fri, 4 Nov 2022 15:10:08 +0800 Subject: [PATCH 2/2] 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];