From f4916211cacaab74f48f655eaab58e6c5be562f8 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 26 Aug 2024 16:56:48 +0800 Subject: [PATCH 1/3] enh: clear more asserts --- include/common/tmsg.h | 12 ++++++++---- include/util/tdef.h | 2 +- source/dnode/mgmt/mgmt_vnode/src/vmInt.c | 5 ----- source/dnode/snode/src/snode.c | 8 +++++--- source/dnode/vnode/src/tsdb/tsdbMergeTree.c | 2 +- source/dnode/vnode/src/tsdb/tsdbRead2.c | 4 +--- source/dnode/vnode/src/tsdb/tsdbReadUtil.c | 4 +++- source/dnode/vnode/src/tsdb/tsdbWrite.c | 4 ++-- source/util/src/ttimer.c | 6 ++++-- source/util/src/tworker.c | 5 ++--- 10 files changed, 27 insertions(+), 25 deletions(-) diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 3dee29f864..010e538fb6 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -707,7 +707,9 @@ static FORCE_INLINE SColCmprWrapper* tCloneSColCmprWrapper(const SColCmprWrapper } static FORCE_INLINE int32_t tInitDefaultSColCmprWrapperByCols(SColCmprWrapper* pCmpr, int32_t nCols) { - assert(!pCmpr->pColCmpr); + if (!(!pCmpr->pColCmpr)) { + return TSDB_CODE_INVALID_PARA; + } pCmpr->pColCmpr = (SColCmpr*)taosMemoryCalloc(nCols, sizeof(SColCmpr)); if (pCmpr->pColCmpr == NULL) { return terrno; @@ -718,7 +720,9 @@ static FORCE_INLINE int32_t tInitDefaultSColCmprWrapperByCols(SColCmprWrapper* p static FORCE_INLINE int32_t tInitDefaultSColCmprWrapper(SColCmprWrapper* pCmpr, SSchemaWrapper* pSchema) { pCmpr->nCols = pSchema->nCols; - assert(!pCmpr->pColCmpr); + if (!(!pCmpr->pColCmpr)) { + return TSDB_CODE_INVALID_PARA; + } pCmpr->pColCmpr = (SColCmpr*)taosMemoryCalloc(pCmpr->nCols, sizeof(SColCmpr)); if (pCmpr->pColCmpr == NULL) { return terrno; @@ -2813,8 +2817,8 @@ enum { TOPIC_SUB_TYPE__COLUMN, }; -#define DEFAULT_MAX_POLL_INTERVAL 3000000 -#define DEFAULT_SESSION_TIMEOUT 12000 +#define DEFAULT_MAX_POLL_INTERVAL 3000000 +#define DEFAULT_SESSION_TIMEOUT 12000 typedef struct { char name[TSDB_TOPIC_FNAME_LEN]; // accout.topic diff --git a/include/util/tdef.h b/include/util/tdef.h index f087c28684..a750074953 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -40,7 +40,7 @@ extern const int32_t TYPE_BYTES[21]; #define LONG_BYTES sizeof(int64_t) #define FLOAT_BYTES sizeof(float) #define DOUBLE_BYTES sizeof(double) -#define POINTER_BYTES sizeof(void *) // 8 by default assert(sizeof(ptrdiff_t) == sizseof(void*) +#define POINTER_BYTES sizeof(void *) #define TSDB_KEYSIZE sizeof(TSKEY) #define TSDB_NCHAR_SIZE sizeof(TdUcs4) diff --git a/source/dnode/mgmt/mgmt_vnode/src/vmInt.c b/source/dnode/mgmt/mgmt_vnode/src/vmInt.c index e599676cec..e85794b568 100644 --- a/source/dnode/mgmt/mgmt_vnode/src/vmInt.c +++ b/source/dnode/mgmt/mgmt_vnode/src/vmInt.c @@ -167,7 +167,6 @@ int32_t vmOpenVnode(SVnodeMgmt *pMgmt, SWrapperCfg *pCfg, SVnode *pImpl) { SVnodeObj *pOld = NULL; (void)taosHashGetDup(pMgmt->hash, &pVnode->vgId, sizeof(int32_t), (void *)&pOld); if (pOld) { - ASSERT(pOld->failed); vmFreeVnodeObj(&pOld); } int32_t code = taosHashPut(pMgmt->hash, &pVnode->vgId, sizeof(int32_t), &pVnode, sizeof(SVnodeObj *)); @@ -190,7 +189,6 @@ void vmCloseVnode(SVnodeMgmt *pMgmt, SVnodeObj *pVnode, bool commitAndRemoveWal) vmReleaseVnode(pMgmt, pVnode); if (pVnode->failed) { - ASSERT(pVnode->pImpl == NULL); goto _closed; } dInfo("vgId:%d, pre close", pVnode->vgId); @@ -692,8 +690,6 @@ static void *vmRestoreVnodeInThread(void *param) { continue; } - ASSERT(pVnode->pImpl); - char stepDesc[TSDB_STEP_DESC_LEN] = {0}; snprintf(stepDesc, TSDB_STEP_DESC_LEN, "vgId:%d, start to restore, %d of %d have been restored", pVnode->vgId, pMgmt->state.openVnodes, pMgmt->state.totalVnodes); @@ -764,7 +760,6 @@ static int32_t vmStartVnodes(SVnodeMgmt *pMgmt) { (void)taosThreadAttrSetDetachState(&thAttr, PTHREAD_CREATE_JOINABLE); if (taosThreadCreate(&pThread->thread, &thAttr, vmRestoreVnodeInThread, pThread) != 0) { dError("thread:%d, failed to create thread to restore vnode since %s", pThread->threadIndex, strerror(errno)); - ASSERT(errno == 0); } (void)taosThreadAttrDestroy(&thAttr); diff --git a/source/dnode/snode/src/snode.c b/source/dnode/snode/src/snode.c index ce7c8aee7f..7fc079677b 100644 --- a/source/dnode/snode/src/snode.c +++ b/source/dnode/snode/src/snode.c @@ -26,7 +26,9 @@ // clang-format on int32_t sndBuildStreamTask(SSnode *pSnode, SStreamTask *pTask, int64_t nextProcessVer) { - ASSERT(pTask->info.taskLevel == TASK_LEVEL__AGG && taosArrayGetSize(pTask->upstreamInfo.pList) != 0); + if (!(pTask->info.taskLevel == TASK_LEVEL__AGG && taosArrayGetSize(pTask->upstreamInfo.pList) != 0)) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = streamTaskInit(pTask, pSnode->pMeta, &pSnode->msgCb, nextProcessVer); if (code != TSDB_CODE_SUCCESS) { return code; @@ -135,7 +137,7 @@ int32_t sndProcessStreamMsg(SSnode *pSnode, SRpcMsg *pMsg) { return tqStreamTaskProcessRetrieveTriggerRsp(pSnode->pMeta, pMsg); default: sndError("invalid snode msg:%d", pMsg->msgType); - ASSERT(0); + return TSDB_CODE_INVALID_MSG; } return 0; } @@ -164,7 +166,7 @@ int32_t sndProcessWriteMsg(SSnode *pSnode, SRpcMsg *pMsg, SRpcMsg *pRsp) { case TDMT_STREAM_CONSEN_CHKPT: return tqStreamTaskProcessConsenChkptIdReq(pSnode->pMeta, pMsg); default: - ASSERT(0); + return TSDB_CODE_INVALID_MSG; } return 0; } diff --git a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c index 21c5d33ec9..bc5fcfc27c 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c +++ b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c @@ -1127,7 +1127,7 @@ int32_t tMergeTreeNext(SMergeTree *pMTree, bool *pHasNext) { (void)tRBTreePut(&pMTree->rbt, (SRBTreeNode *)pMTree->pIter); pMTree->pIter = NULL; } else { - ASSERT(c); + return TSDB_CODE_INTERNAL_ERROR; } } } diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 391b7f636d..a232891aad 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -1081,7 +1081,6 @@ static void copyNumericCols(const SColData* pData, SFileBlockDumpInfo* pDumpInfo int32_t step = asc ? 1 : -1; // make sure it is aligned to 8bit, the allocated memory address is aligned to 256bit - // ASSERT((((uint64_t)pColData->pData) & (0x8 - 1)) == 0); // 1. copy data in a batch model (void)memcpy(pColData->pData, p, dumpedRows * tDataTypes[pData->type].bytes); @@ -3828,7 +3827,6 @@ bool hasBeenDropped(const SArray* pDelList, int32_t* index, int64_t key, int64_t return false; } - // ASSERT(key >= last->ts); if (key > last->ts) { return false; } else if (key == last->ts) { @@ -3891,7 +3889,7 @@ bool hasBeenDropped(const SArray* pDelList, int32_t* index, int64_t key, int64_t } else if (key == pFirst->ts) { return pFirst->version >= ver; } else { - // ASSERT(0); + tsdbError("unexpected error, key:%" PRId64 ", first:%" PRId64, key, pFirst->ts); } } else { TSDBKEY* pCurrent = taosArrayGet(pDelList, *index); diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index 5d4dc94431..e0e428be7e 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -1319,7 +1319,9 @@ static bool doCheckDatablockOverlap(STableBlockScanInfo* pBlockScanInfo, const S return true; } } else { // it must be the last point - ASSERT(p->version == 0); + if (!(p->version == 0)) { + tsdbError("unexpected version:%d", p->version); + } } } } else { // (p->ts > pBlock->maxKey.ts) { diff --git a/source/dnode/vnode/src/tsdb/tsdbWrite.c b/source/dnode/vnode/src/tsdb/tsdbWrite.c index a35068163f..8104d64c99 100644 --- a/source/dnode/vnode/src/tsdb/tsdbWrite.c +++ b/source/dnode/vnode/src/tsdb/tsdbWrite.c @@ -33,8 +33,8 @@ int tsdbInsertData(STsdb *pTsdb, int64_t version, SSubmitReq2 *pMsg, SSubmitRsp2 int32_t affectedrows = 0; int32_t numOfRows = 0; - if (ASSERTS(pTsdb->mem != NULL, "vgId:%d, mem is NULL", TD_VID(pTsdb->pVnode))) { - TAOS_RETURN(TSDB_CODE_INVALID_PTR); + if (pTsdb->mem == NULL) { + TAOS_RETURN(TSDB_CODE_INTERNAL_ERROR); } arrSize = taosArrayGetSize(pMsg->aSubmitTbData); diff --git a/source/util/src/ttimer.c b/source/util/src/ttimer.c index 6ade226cd8..60edb2f045 100644 --- a/source/util/src/ttimer.c +++ b/source/util/src/ttimer.c @@ -159,7 +159,7 @@ static void lockTimerList(timer_list_t* list) { static void unlockTimerList(timer_list_t* list) { int64_t tid = taosGetSelfPthreadId(); if (atomic_val_compare_exchange_64(&(list->lockedBy), tid, 0) != tid) { - ASSERTS(false, "%" PRId64 " trying to unlock a timer list not locked by current thread.", tid); + uError("%" PRId64 " trying to unlock a timer list not locked by current thread.", tid); } } @@ -505,7 +505,9 @@ bool taosTmrReset(TAOS_TMR_CALLBACK fp, int32_t mseconds, void* param, void* han } } - ASSERTS(timer->refCount == 1, "timer refCount=%d not expected 1", timer->refCount); + if (timer->refCount == 1) { + uError("timer refCount=%d not expected 1", timer->refCount); + } memset(timer, 0, sizeof(*timer)); *pTmrId = (tmr_h)doStartTimer(timer, fp, mseconds, param, ctrl); diff --git a/source/util/src/tworker.c b/source/util/src/tworker.c index b2064d6787..60444e586f 100644 --- a/source/util/src/tworker.c +++ b/source/util/src/tworker.c @@ -494,7 +494,7 @@ int32_t tSingleWorkerInit(SSingleWorker *pWorker, const SSingleWorkerCfg *pCfg) } } break; default: - assert(0); + return TSDB_CODE_INVALID_PARA; } return 0; } @@ -517,7 +517,7 @@ void tSingleWorkerCleanup(SSingleWorker *pWorker) { taosMemoryFree(pWorker->pool); break; default: - assert(0); + break; } } @@ -812,7 +812,6 @@ int32_t tQueryAutoQWorkerInit(SQueryAutoQWorkerPool *pool) { if (!pool->exitedWorkers) return TSDB_CODE_OUT_OF_MEMORY; pool->maxInUse = pool->max * 2 + 2; - if (!pool->pCb) { pool->pCb = taosMemoryCalloc(1, sizeof(SQueryAutoQWorkerPoolCB)); if (!pool->pCb) return TSDB_CODE_OUT_OF_MEMORY; From 5b68cc1dd37e2d7b0aee5e98e0e670657995b0f7 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 26 Aug 2024 19:20:30 +0800 Subject: [PATCH 2/3] fix: error log --- source/dnode/vnode/src/tsdb/tsdbReadUtil.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index e0e428be7e..23ae33ee3b 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -1320,7 +1320,7 @@ static bool doCheckDatablockOverlap(STableBlockScanInfo* pBlockScanInfo, const S } } else { // it must be the last point if (!(p->version == 0)) { - tsdbError("unexpected version:%d", p->version); + tsdbError("unexpected version:%" PRId64, p->version); } } } From afca8eb914b2ec268c500889036c79022b96da83 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 27 Aug 2024 13:36:27 +0800 Subject: [PATCH 3/3] fix: error handle --- source/dnode/vnode/src/tsdb/tsdbMergeTree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c index bc5fcfc27c..f89e35dbb1 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c +++ b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c @@ -1126,7 +1126,7 @@ int32_t tMergeTreeNext(SMergeTree *pMTree, bool *pHasNext) { if (c > 0) { (void)tRBTreePut(&pMTree->rbt, (SRBTreeNode *)pMTree->pIter); pMTree->pIter = NULL; - } else { + } else if (!c) { return TSDB_CODE_INTERNAL_ERROR; } }