diff --git a/source/dnode/mnode/impl/src/mndArbGroup.c b/source/dnode/mnode/impl/src/mndArbGroup.c index e8c8df328d..3860f10f8f 100644 --- a/source/dnode/mnode/impl/src/mndArbGroup.c +++ b/source/dnode/mnode/impl/src/mndArbGroup.c @@ -1316,7 +1316,7 @@ static int32_t mndRetrieveArbGroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock static void mndCancelGetNextArbGroup(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_ARBGROUP); } int32_t mndGetArbGroupSize(SMnode *pMnode) { diff --git a/source/dnode/mnode/impl/src/mndCluster.c b/source/dnode/mnode/impl/src/mndCluster.c index 27bd47c569..5cec3a8f27 100644 --- a/source/dnode/mnode/impl/src/mndCluster.c +++ b/source/dnode/mnode/impl/src/mndCluster.c @@ -346,7 +346,7 @@ _OVER: static void mndCancelGetNextCluster(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_CLUSTER); } static int32_t mndProcessUptimeTimer(SRpcMsg *pReq) { diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 1d0dbd1c44..fe33d666b8 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -1003,7 +1003,7 @@ END: static void mndCancelGetNextConsumer(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_CONSUMER); } const char *mndConsumerStatusName(int status) { diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 0ee265dd74..2792ea79f7 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -2522,5 +2522,5 @@ static int32_t mndRetrieveDbs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc static void mndCancelGetNextDb(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_DB); } diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index ffd8e16468..71952b3bb8 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -1814,7 +1814,7 @@ static int32_t mndRetrieveDnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextDnode(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_DNODE); } // get int32_t value from 'SMCfgDnodeReq' diff --git a/source/dnode/mnode/impl/src/mndFunc.c b/source/dnode/mnode/impl/src/mndFunc.c index f89394ee22..326f2ffa95 100644 --- a/source/dnode/mnode/impl/src/mndFunc.c +++ b/source/dnode/mnode/impl/src/mndFunc.c @@ -719,5 +719,5 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl static void mndCancelGetNextFunc(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_FUNC); } diff --git a/source/dnode/mnode/impl/src/mndMnode.c b/source/dnode/mnode/impl/src/mndMnode.c index 67fdcc2466..5315416226 100644 --- a/source/dnode/mnode/impl/src/mndMnode.c +++ b/source/dnode/mnode/impl/src/mndMnode.c @@ -935,7 +935,7 @@ _out: static void mndCancelGetNextMnode(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_MNODE); } static int32_t mndProcessAlterMnodeReq(SRpcMsg *pReq) { diff --git a/source/dnode/mnode/impl/src/mndQnode.c b/source/dnode/mnode/impl/src/mndQnode.c index 8210b94b57..54052590a1 100644 --- a/source/dnode/mnode/impl/src/mndQnode.c +++ b/source/dnode/mnode/impl/src/mndQnode.c @@ -582,5 +582,5 @@ static int32_t mndRetrieveQnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextQnode(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_QNODE); } diff --git a/source/dnode/mnode/impl/src/mndSma.c b/source/dnode/mnode/impl/src/mndSma.c index ab55829c54..5e32b2ad52 100644 --- a/source/dnode/mnode/impl/src/mndSma.c +++ b/source/dnode/mnode/impl/src/mndSma.c @@ -1520,7 +1520,7 @@ static void mndCancelRetrieveIdx(SMnode *pMnode, void *pIter) { SSmaAndTagIter *p = pIter; if (p != NULL) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, p->pSmaIter); + sdbCancelFetchByType(pSdb, p->pSmaIter, SDB_SMA); sdbCancelFetchByType(pSdb, p->pIdxIter, SDB_IDX); } taosMemoryFree(p); @@ -2288,7 +2288,7 @@ static void mndCancelRetrieveTSMA(SMnode *pMnode, void *pIter) { SSmaAndTagIter *p = pIter; if (p != NULL) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, p->pSmaIter); + sdbCancelFetchByType(pSdb, p->pSmaIter, SDB_SMA); } taosMemoryFree(p); } diff --git a/source/dnode/mnode/impl/src/mndSnode.c b/source/dnode/mnode/impl/src/mndSnode.c index cd5584022f..c5e38ed048 100644 --- a/source/dnode/mnode/impl/src/mndSnode.c +++ b/source/dnode/mnode/impl/src/mndSnode.c @@ -504,5 +504,5 @@ static int32_t mndRetrieveSnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextSnode(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_SNODE); } diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 6384451d86..7220203ce6 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -3832,7 +3832,7 @@ static int32_t mndRetrieveStbCol(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextStb(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_STB); } const char *mndGetStbStr(const char *src) { diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index bc9f3adbfe..97eb7d609b 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -1651,7 +1651,7 @@ static int32_t mndRetrieveStream(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextStream(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_STREAM); } static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rowsCapacity) { @@ -1723,7 +1723,7 @@ static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock static void mndCancelGetNextStreamTask(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_STREAM); } static int32_t mndProcessPauseStreamReq(SRpcMsg *pReq) { diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index 22ac58c9db..e3bef61bc0 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -1484,5 +1484,5 @@ END: void mndCancelGetNextSubscribe(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_SUBSCRIBE); } diff --git a/source/dnode/mnode/impl/src/mndTopic.c b/source/dnode/mnode/impl/src/mndTopic.c index 9e06f3b0f2..ed702e7707 100644 --- a/source/dnode/mnode/impl/src/mndTopic.c +++ b/source/dnode/mnode/impl/src/mndTopic.c @@ -934,7 +934,7 @@ END: static void mndCancelGetNextTopic(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_TOPIC); } bool mndTopicExistsForDb(SMnode *pMnode, SDbObj *pDb) { diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index 176b39f92e..521539759c 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1997,5 +1997,5 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl static void mndCancelGetNextTrans(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_TRANS); } diff --git a/source/dnode/mnode/impl/src/mndUser.c b/source/dnode/mnode/impl/src/mndUser.c index 49cacb3dce..7f29fc0d6d 100644 --- a/source/dnode/mnode/impl/src/mndUser.c +++ b/source/dnode/mnode/impl/src/mndUser.c @@ -2772,7 +2772,7 @@ _exit: static void mndCancelGetNextUser(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_USER); } static int32_t mndLoopHash(SHashObj *hash, char *priType, SSDataBlock *pBlock, int32_t *pNumOfRows, SSdb *pSdb, @@ -3124,7 +3124,7 @@ _exit: static void mndCancelGetNextPrivileges(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_USER); } int32_t mndValidateUserAuthInfo(SMnode *pMnode, SUserAuthVersion *pUsers, int32_t numOfUses, void **ppRsp, diff --git a/source/dnode/mnode/impl/src/mndVgroup.c b/source/dnode/mnode/impl/src/mndVgroup.c index 5cfc896a1c..b2f1c3cf55 100644 --- a/source/dnode/mnode/impl/src/mndVgroup.c +++ b/source/dnode/mnode/impl/src/mndVgroup.c @@ -1077,7 +1077,7 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p static void mndCancelGetNextVgroup(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_VGROUP); } static bool mndGetVnodesNumFp(SMnode *pMnode, void *pObj, void *p1, void *p2, void *p3) { @@ -1212,7 +1212,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB static void mndCancelGetNextVnode(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_VGROUP); } static int32_t mndAddVnodeToVgroup(SMnode *pMnode, STrans *pTrans, SVgObj *pVgroup, SArray *pArray) { diff --git a/source/dnode/mnode/impl/src/mndView.c b/source/dnode/mnode/impl/src/mndView.c index f4138b2afe..d9e8fb2d15 100755 --- a/source/dnode/mnode/impl/src/mndView.c +++ b/source/dnode/mnode/impl/src/mndView.c @@ -99,5 +99,5 @@ int32_t mndRetrieveView(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int void mndCancelGetNextView(SMnode *pMnode, void *pIter) { SSdb *pSdb = pMnode->pSdb; - sdbCancelFetch(pSdb, pIter); + sdbCancelFetchByType(pSdb, pIter, SDB_VIEW); } diff --git a/source/dnode/mnode/sdb/src/sdbHash.c b/source/dnode/mnode/sdb/src/sdbHash.c index 60e6c1b81e..0e41e0732f 100644 --- a/source/dnode/mnode/sdb/src/sdbHash.c +++ b/source/dnode/mnode/sdb/src/sdbHash.c @@ -242,7 +242,12 @@ static int32_t sdbDeleteRow(SSdb *pSdb, SHashObj *hash, SSdbRaw *pRaw, SSdbRow * (void)atomic_add_fetch_32(&pOldRow->refCount, 1); sdbPrintOper(pSdb, pOldRow, "delete"); - TAOS_CHECK_RETURN(taosHashRemove(hash, pOldRow->pObj, keySize)); + if (taosHashRemove(hash, pOldRow->pObj, keySize) != 0) { + sdbUnLock(pSdb, type); + sdbFreeRow(pSdb, pRow, false); + terrno = TSDB_CODE_SDB_OBJ_NOT_THERE; + return terrno; + } pSdb->tableVer[pOldRow->type]++; sdbUnLock(pSdb, type);