diff --git a/source/dnode/mnode/impl/src/mndSync.c b/source/dnode/mnode/impl/src/mndSync.c index 36362bed87aa7f9fccc56ddeff19654f40544827..367bdc68c32089d6ff591dc782672dfde73aa829 100644 --- a/source/dnode/mnode/impl/src/mndSync.c +++ b/source/dnode/mnode/impl/src/mndSync.c @@ -144,9 +144,11 @@ int32_t mndSnapshotStartWrite(struct SSyncFSM *pFsm, void *pParam, void **ppWrit } int32_t mndSnapshotStopWrite(struct SSyncFSM *pFsm, void *pWriter, bool isApply, SSnapshot *pSnapshot) { - mInfo("stop to apply snapshot to sdb, apply:%d", isApply); + mInfo("stop to apply snapshot to sdb, apply:%d, index:%" PRId64 " term:%" PRIu64 " config:%" PRId64, isApply, + pSnapshot->lastApplyIndex, pSnapshot->lastApplyTerm, pSnapshot->lastApplyIndex); SMnode *pMnode = pFsm->data; - return sdbStopWrite(pMnode->pSdb, pWriter, isApply); + return sdbStopWrite(pMnode->pSdb, pWriter, isApply, pSnapshot->lastApplyIndex, pSnapshot->lastApplyTerm, + pSnapshot->lastConfigIndex); } int32_t mndSnapshotDoWrite(struct SSyncFSM *pFsm, void *pWriter, void *pBuf, int32_t len) { @@ -157,7 +159,7 @@ int32_t mndSnapshotDoWrite(struct SSyncFSM *pFsm, void *pWriter, void *pBuf, int void mndLeaderTransfer(struct SSyncFSM *pFsm, const SRpcMsg *pMsg, SFsmCbMeta cbMeta) { SMnode *pMnode = pFsm->data; atomic_store_8(&(pMnode->syncMgmt.leaderTransferFinish), 1); - mDebug("vgId:1, mnd leader transfer finish"); + mDebug("vgId:1, mnode leader transfer finish"); } SSyncFSM *mndSyncMakeFsm(SMnode *pMnode) { diff --git a/source/dnode/mnode/impl/test/sdb/sdbTest.cpp b/source/dnode/mnode/impl/test/sdb/sdbTest.cpp index 87895d3b4930ff78ab4b147f688f98ff9cd71229..7a8a5e8ca74fe228a06285f1050108e4e5954967 100644 --- a/source/dnode/mnode/impl/test/sdb/sdbTest.cpp +++ b/source/dnode/mnode/impl/test/sdb/sdbTest.cpp @@ -925,7 +925,7 @@ TEST_F(MndTestSdb, 01_Read_Str) { } sdbStopRead(pSdb, pReader); - sdbStopWrite(pSdb, pWritter, true); + sdbStopWrite(pSdb, pWritter, true, -1, -1, -1); } ASSERT_EQ(sdbGetSize(pSdb, SDB_CONSUMER), 1); diff --git a/source/dnode/mnode/sdb/inc/sdb.h b/source/dnode/mnode/sdb/inc/sdb.h index 991dd2c4f9b93542c132bf2624ab6b1610c3bbce..f922baf329fbba3c747f9be19f5bda30876d68ea 100644 --- a/source/dnode/mnode/sdb/inc/sdb.h +++ b/source/dnode/mnode/sdb/inc/sdb.h @@ -394,7 +394,7 @@ int32_t sdbStopRead(SSdb *pSdb, SSdbIter *pIter); int32_t sdbDoRead(SSdb *pSdb, SSdbIter *pIter, void **ppBuf, int32_t *len); int32_t sdbStartWrite(SSdb *pSdb, SSdbIter **ppIter); -int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply); +int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply, int64_t index, int64_t term, int64_t config); int32_t sdbDoWrite(SSdb *pSdb, SSdbIter *pIter, void *pBuf, int32_t len); const char *sdbTableName(ESdbType type); diff --git a/source/dnode/mnode/sdb/src/sdbFile.c b/source/dnode/mnode/sdb/src/sdbFile.c index ff4a9e4ead5511b3c876522f2103b429f30da4ed..302f0c5fbb1664b284d6804c6ae7f18d9945a192 100644 --- a/source/dnode/mnode/sdb/src/sdbFile.c +++ b/source/dnode/mnode/sdb/src/sdbFile.c @@ -613,7 +613,7 @@ int32_t sdbStartWrite(SSdb *pSdb, SSdbIter **ppIter) { return 0; } -int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply) { +int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply, int64_t index, int64_t term, int64_t config) { int32_t code = 0; if (!isApply) { @@ -641,6 +641,19 @@ int32_t sdbStopWrite(SSdb *pSdb, SSdbIter *pIter, bool isApply) { return -1; } + if (config > 0) { + ASSERT(pSdb->commitConfig == config); + pSdb->commitConfig = config; + } + if (term > 0) { + ASSERT(pSdb->commitTerm == term); + pSdb->commitTerm = term; + } + if (index > 0) { + ASSERT(pSdb->commitIndex == index); + pSdb->commitIndex = index; + } + mDebug("sdbiter:%p, successfully applyed to sdb", pIter); return 0; }