From 94e0d97aa2c534fca88ce61a75b94759d8fb946e Mon Sep 17 00:00:00 2001 From: Benguang Zhao Date: Tue, 15 Aug 2023 19:39:13 +0800 Subject: [PATCH] enh: update pDb stateTs on stateChanged --- source/dnode/mnode/impl/src/mndDnode.c | 7 ++++--- source/dnode/mnode/impl/src/mndMain.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index a52a788304..7fbfdfbfb1 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -496,11 +496,11 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) { pVgroup->compStorage = pVload->compStorage; pVgroup->pointsWritten = pVload->pointsWritten; } - bool roleChanged = false; + bool stateChanged = false; for (int32_t vg = 0; vg < pVgroup->replica; ++vg) { SVnodeGid *pGid = &pVgroup->vnodeGid[vg]; if (pGid->dnodeId == statusReq.dnodeId) { - roleChanged = + bool roleChanged = pGid->syncState != pVload->syncState || (pVload->syncTerm != -1 && pGid->syncTerm != pVload->syncTerm); if (reboot || roleChanged || pGid->syncRestore != pVload->syncRestore || pGid->syncCanRead != pVload->syncCanRead) { mInfo( @@ -513,6 +513,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) { pGid->syncRestore = pVload->syncRestore; pGid->syncCanRead = pVload->syncCanRead; pGid->startTimeMs = (pVload->startTimeMs != 0) ? pVload->startTimeMs : statusReq.rebootTime; + stateChanged = true; } if (roleChanged) { pGid->roleTimeMs = (pVload->roleTimeMs != 0) ? pVload->roleTimeMs : taosGetTimestampMs(); @@ -520,7 +521,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) { break; } } - if (roleChanged) { + if (stateChanged) { SDbObj *pDb = mndAcquireDb(pMnode, pVgroup->dbName); if (pDb != NULL && pDb->stateTs != curMs) { mInfo("db:%s, stateTs changed by status msg, old stateTs:%" PRId64 " new stateTs:%" PRId64, pDb->name, diff --git a/source/dnode/mnode/impl/src/mndMain.c b/source/dnode/mnode/impl/src/mndMain.c index 1071a6cf6e..b28ad207ea 100644 --- a/source/dnode/mnode/impl/src/mndMain.c +++ b/source/dnode/mnode/impl/src/mndMain.c @@ -185,7 +185,7 @@ static void mndSetVgroupOffline(SMnode *pMnode, int32_t dnodeId, int64_t curMs) pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup); if (pIter == NULL) break; - bool roleChanged = false; + bool stateChanged = false; for (int32_t vg = 0; vg < pVgroup->replica; ++vg) { SVnodeGid *pGid = &pVgroup->vnodeGid[vg]; if (pGid->dnodeId == dnodeId) { @@ -197,13 +197,14 @@ static void mndSetVgroupOffline(SMnode *pMnode, int32_t dnodeId, int64_t curMs) pGid->syncState = TAOS_SYNC_STATE_OFFLINE; pGid->syncRestore = 0; pGid->syncCanRead = 0; - roleChanged = true; + pGid->startTimeMs = 0; + stateChanged = true; } break; } } - if (roleChanged) { + if (stateChanged) { SDbObj *pDb = mndAcquireDb(pMnode, pVgroup->dbName); if (pDb != NULL && pDb->stateTs != curMs) { mInfo("db:%s, stateTs changed by offline check, old newTs:%" PRId64 " newTs:%" PRId64, pDb->name, pDb->stateTs,