From 5147dc582a778ff80d756902649d30ef5433b6ec Mon Sep 17 00:00:00 2001 From: Shungang Li Date: Fri, 30 Aug 2024 17:36:38 +0800 Subject: [PATCH 1/5] fix: (last) use insert to update LRU entry --- source/dnode/vnode/src/tsdb/tsdbCache.c | 40 +++++++++++-------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 586a9d7df9..114a1f7b89 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -757,24 +757,12 @@ static int32_t tsdbCacheDropTableColumn(STsdb *pTsdb, int64_t uid, int16_t cid, rocksdb_free(values_list[0]); rocksdb_free(values_list[1]); - bool erase = false; - LRUHandle *h = taosLRUCacheLookup(pTsdb->lruCache, keys_list[0], klen); - if (h) { - erase = true; - (void)taosLRUCacheRelease(pTsdb->lruCache, h, erase); - } - if (erase) { - taosLRUCacheErase(pTsdb->lruCache, keys_list[0], klen); - } - - erase = false; - h = taosLRUCacheLookup(pTsdb->lruCache, keys_list[1], klen); - if (h) { - erase = true; - (void)taosLRUCacheRelease(pTsdb->lruCache, h, erase); - } - if (erase) { - taosLRUCacheErase(pTsdb->lruCache, keys_list[1], klen); + for (int i = 0; i < 2; i++) { + LRUHandle *h = taosLRUCacheLookup(pTsdb->lruCache, keys_list[i], klen); + if (h) { + (void)taosLRUCacheRelease(pTsdb->lruCache, h, true); + taosLRUCacheErase(pTsdb->lruCache, keys_list[i], klen); + } } } @@ -1027,6 +1015,7 @@ static int32_t tsdbCacheUpdateValue(SValue *pOld, SValue *pNew) { TAOS_RETURN(TSDB_CODE_SUCCESS); } +#ifdef BUILD_NO_CALL static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal *pColVal) { // update rowkey pLastCol->rowKey.ts = pRowKey->ts; @@ -1047,6 +1036,7 @@ static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal pLastCol->dirty = 1; } } +#endif static void tsdbCacheUpdateLastColToNone(SLastCol *pLastCol, ELastCacheStatus cacheStatus) { // update rowkey @@ -1108,11 +1098,12 @@ static int32_t tsdbCachePutToLRU(STsdb *pTsdb, SLastKey *pLastKey, SLastCol *pLa size_t charge = 0; *pLRULastCol = *pLastCol; + pLRULastCol->dirty = 1; TAOS_CHECK_EXIT(tsdbCacheReallocSLastCol(pLRULastCol, &charge)); LRUStatus status = taosLRUCacheInsert(pTsdb->lruCache, pLastKey, ROCKS_KEY_LEN, pLRULastCol, charge, tsdbCacheDeleter, NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState); - if (TAOS_LRU_STATUS_OK != status) { + if (TAOS_LRU_STATUS_OK != status && TAOS_LRU_STATUS_OK_OVERWRITTEN != status) { tsdbError("tsdb/cache/putlru: vgId:%d, failed to insert status %d.", TD_VID(pTsdb->pVnode), status); code = TSDB_CODE_INVALID_DATA_FMT; } @@ -1157,12 +1148,13 @@ static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray if (pLastCol->cacheStatus != TSDB_LAST_CACHE_NO_CACHE) { int32_t cmp_res = tRowKeyCompare(&pLastCol->rowKey, pRowKey); if (cmp_res < 0 || (cmp_res == 0 && !COL_VAL_IS_NONE(pColVal))) { - tsdbCacheUpdateLastCol(pLastCol, pRowKey, pColVal); - pLastCol->cacheStatus = TSDB_LAST_CACHE_VALID; + SLastCol newLastCol = {.rowKey = *pRowKey, .colVal = *pColVal, .cacheStatus = TSDB_LAST_CACHE_VALID}; + code = tsdbCachePutToLRU(pTsdb, key, &newLastCol); } } (void)taosLRUCacheRelease(pCache, h, false); + TAOS_CHECK_EXIT(code); } else { if (!remainCols) { remainCols = taosArrayInit(num_keys * 2, sizeof(SIdxKey)); @@ -1880,9 +1872,13 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE if (h) { SLastCol *pLastCol = (SLastCol *)taosLRUCacheValue(pTsdb->lruCache, h); if (pLastCol->rowKey.ts <= eKey && pLastCol->rowKey.ts >= sKey) { - tsdbCacheUpdateLastColToNone(pLastCol, TSDB_LAST_CACHE_NO_CACHE); + SLastCol noneCol = {.rowKey.ts = TSKEY_MIN, + .colVal = COL_VAL_NONE(cid, pTSchema->columns[i].type), + .cacheStatus = TSDB_LAST_CACHE_NO_CACHE}; + code = tsdbCachePutToLRU(pTsdb, &lastKey, &noneCol); } (void)taosLRUCacheRelease(pTsdb->lruCache, h, false); + TAOS_CHECK_EXIT(code); } else { if (!remainCols) { remainCols = taosArrayInit(numCols * 2, sizeof(SLastKey)); From 983962238e34b5b6cba91b48cfe0725c57ab4f58 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao> Date: Mon, 2 Sep 2024 13:46:21 +0800 Subject: [PATCH 2/5] fix(query):fix query operator memory leak --- source/libs/executor/src/executil.c | 3 ++- source/libs/executor/src/executor.c | 2 ++ source/libs/executor/src/executorInt.c | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/source/libs/executor/src/executil.c b/source/libs/executor/src/executil.c index 757192b9b0..ea05ba6581 100644 --- a/source/libs/executor/src/executil.c +++ b/source/libs/executor/src/executil.c @@ -56,6 +56,7 @@ static int32_t getTableList(void* pVnode, SScanPhysiNode* pScanNode, SNode* pTag static int64_t getLimit(const SNode* pLimit) { return NULL == pLimit ? -1 : ((SLimitNode*)pLimit)->limit; } static int64_t getOffset(const SNode* pLimit) { return NULL == pLimit ? -1 : ((SLimitNode*)pLimit)->offset; } +static void releaseColInfoData(void* pCol); void initResultRowInfo(SResultRowInfo* pResultRowInfo) { pResultRowInfo->size = 0; @@ -531,7 +532,7 @@ static int32_t createResultData(SDataType* pType, int32_t numOfRows, SScalarPara int32_t code = colInfoDataEnsureCapacity(pColumnData, numOfRows, true); if (code != TSDB_CODE_SUCCESS) { terrno = code; - taosMemoryFree(pColumnData); + releaseColInfoData(pColumnData); return terrno; } diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index c13104fc07..65273487f6 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -1611,6 +1611,8 @@ int32_t getTableListInfo(const SExecTaskInfo* pTaskInfo, SArray** pList) { int32_t code = extractTableList(pArray, pTaskInfo->pRoot); if (code == 0) { *pList = pArray; + } else { + taosArrayDestroy(pArray); } return code; } diff --git a/source/libs/executor/src/executorInt.c b/source/libs/executor/src/executorInt.c index 42e7fbee1f..4b9e9cb02f 100644 --- a/source/libs/executor/src/executorInt.c +++ b/source/libs/executor/src/executorInt.c @@ -1105,7 +1105,8 @@ int32_t createDataSinkParam(SDataSinkNode* pNode, void** pParam, SExecTaskInfo* SArray* pInfoList = NULL; int32_t code = getTableListInfo(pTask, &pInfoList); - if (code || pInfoList == NULL) { + if (code != TSDB_CODE_SUCCESS || pInfoList == NULL) { + taosMemoryFree(pDeleterParam); return code; } From 28d0dc8e5b512bb6b73a266024962787b9bb4461 Mon Sep 17 00:00:00 2001 From: lyh250-666 Date: Mon, 2 Sep 2024 22:59:49 +0800 Subject: [PATCH 3/5] modify error code pass in libs/catalog/, libs/function/ and libs/command/ --- source/libs/catalog/src/catalog.c | 16 ++--- source/libs/catalog/src/ctgAsync.c | 44 ++++++------- source/libs/catalog/src/ctgCache.c | 62 +++++++++---------- source/libs/catalog/src/ctgRemote.c | 28 ++++----- source/libs/catalog/src/ctgRent.c | 2 +- source/libs/command/src/explain.c | 4 +- source/libs/function/src/builtins.c | 4 +- source/libs/function/src/builtinsimpl.c | 20 +++--- .../libs/function/src/detail/tavgfunction.c | 2 +- source/libs/function/src/thistogram.c | 2 +- source/libs/function/src/tpercentile.c | 6 +- source/libs/function/src/udfd.c | 2 +- 12 files changed, 96 insertions(+), 96 deletions(-) diff --git a/source/libs/catalog/src/catalog.c b/source/libs/catalog/src/catalog.c index 334dce9c1a..0b0cb6dc91 100644 --- a/source/libs/catalog/src/catalog.c +++ b/source/libs/catalog/src/catalog.c @@ -110,7 +110,7 @@ int32_t ctgRefreshTbMeta(SCatalog* pCtg, SRequestConnInfo* pConn, SCtgTbMetaCtx* STableMetaOutput* output = taosMemoryCalloc(1, sizeof(STableMetaOutput)); if (NULL == output) { ctgError("malloc %d failed", (int32_t)sizeof(STableMetaOutput)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (CTG_FLAG_IS_SYS_DB(ctx->flag)) { @@ -278,7 +278,7 @@ int32_t ctgUpdateTbMeta(SCatalog* pCtg, STableMetaRsp* rspMsg, bool syncOp) { STableMetaOutput* output = taosMemoryCalloc(1, sizeof(STableMetaOutput)); if (NULL == output) { ctgError("malloc %d failed", (int32_t)sizeof(STableMetaOutput)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } int32_t code = 0; @@ -379,7 +379,7 @@ int32_t ctgGetTbIndex(SCatalog* pCtg, SRequestConnInfo* pConn, SName* pTableName STableIndex* pIndex = taosMemoryCalloc(1, sizeof(STableIndex)); if (NULL == pIndex) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } int32_t code = ctgGetTbIndexFromMnode(pCtg, pConn, (SName*)pTableName, pIndex, NULL); @@ -856,7 +856,7 @@ int32_t catalogInit(SCatalogCfg* cfg) { gCtgMgmt.queue.head = taosMemoryCalloc(1, sizeof(SCtgQNode)); if (NULL == gCtgMgmt.queue.head) { qError("calloc %d failed", (int32_t)sizeof(SCtgQNode)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } gCtgMgmt.queue.tail = gCtgMgmt.queue.head; @@ -916,7 +916,7 @@ int32_t catalogGetHandle(int64_t clusterId, SCatalog** catalogHandle) { clusterCtg = taosMemoryCalloc(1, sizeof(SCatalog)); if (NULL == clusterCtg) { qError("calloc %d failed", (int32_t)sizeof(SCatalog)); - CTG_API_LEAVE(TSDB_CODE_OUT_OF_MEMORY); + CTG_API_LEAVE(terrno); } clusterCtg->clusterId = clusterId; @@ -1065,7 +1065,7 @@ int32_t catalogGetDBVgInfo(SCatalog* pCtg, SRequestConnInfo* pConn, const char* pInfo->vgHash = taosMemoryCalloc(pInfo->vgNum, sizeof(TAOS_VGROUP_HASH_INFO)); if (NULL == pInfo->vgHash) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } SVgroupInfo* vgInfo = NULL; @@ -1178,7 +1178,7 @@ int32_t catalogUpdateTableIndex(SCatalog* pCtg, STableIndexRsp* pRsp) { STableIndex* pIndex = taosMemoryCalloc(1, sizeof(STableIndex)); if (NULL == pIndex) { - CTG_API_LEAVE(TSDB_CODE_OUT_OF_MEMORY); + CTG_API_LEAVE(terrno); } TAOS_MEMCPY(pIndex, pRsp, sizeof(STableIndex)); @@ -1613,7 +1613,7 @@ int32_t catalogGetExpiredUsers(SCatalog* pCtg, SUserAuthVersion** users, uint32_ *users = taosMemoryCalloc(*num, sizeof(SUserAuthVersion)); if (NULL == *users) { ctgError("calloc %d userAuthVersion failed", *num); - CTG_API_LEAVE(TSDB_CODE_OUT_OF_MEMORY); + CTG_API_LEAVE(terrno); } uint32_t i = 0; diff --git a/source/libs/catalog/src/ctgAsync.c b/source/libs/catalog/src/ctgAsync.c index ff37b3fd41..e35aaeb0b1 100644 --- a/source/libs/catalog/src/ctgAsync.c +++ b/source/libs/catalog/src/ctgAsync.c @@ -54,7 +54,7 @@ int32_t ctgInitGetTbMetaTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbMetaCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbMetaCtx* ctx = task.taskCtx; @@ -87,7 +87,7 @@ int32_t ctgInitGetTbMetasTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbMetasCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbMetasCtx* ctx = task.taskCtx; @@ -121,7 +121,7 @@ int32_t ctgInitGetDbVgTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgDbVgCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgDbVgCtx* ctx = task.taskCtx; @@ -149,7 +149,7 @@ int32_t ctgInitGetDbCfgTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgDbCfgCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgDbCfgCtx* ctx = task.taskCtx; @@ -177,7 +177,7 @@ int32_t ctgInitGetDbInfoTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgDbInfoCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgDbInfoCtx* ctx = task.taskCtx; @@ -205,7 +205,7 @@ int32_t ctgInitGetTbHashTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbHashCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbHashCtx* ctx = task.taskCtx; @@ -238,7 +238,7 @@ int32_t ctgInitGetTbHashsTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbHashsCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbHashsCtx* ctx = task.taskCtx; @@ -308,7 +308,7 @@ int32_t ctgInitGetIndexTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgIndexCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgIndexCtx* ctx = task.taskCtx; @@ -336,7 +336,7 @@ int32_t ctgInitGetUdfTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgUdfCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgUdfCtx* ctx = task.taskCtx; @@ -364,7 +364,7 @@ int32_t ctgInitGetUserTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgUserCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgUserCtx* ctx = task.taskCtx; @@ -409,7 +409,7 @@ int32_t ctgInitGetTbIndexTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbIndexCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbIndexCtx* ctx = task.taskCtx; @@ -442,7 +442,7 @@ int32_t ctgInitGetTbCfgTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbCfgCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbCfgCtx* ctx = task.taskCtx; @@ -475,7 +475,7 @@ int32_t ctgInitGetTbTagTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgTbTagCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgTbTagCtx* ctx = task.taskCtx; @@ -507,7 +507,7 @@ int32_t ctgInitGetViewsTask(SCtgJob* pJob, int32_t taskIdx, void* param) { task.taskCtx = taosMemoryCalloc(1, sizeof(SCtgViewsCtx)); if (NULL == task.taskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgViewsCtx* ctx = task.taskCtx; @@ -539,7 +539,7 @@ int32_t ctgInitGetTbTSMATask(SCtgJob* pJob, int32_t taskId, void* param) { SCtgTbTSMACtx* pTaskCtx = taosMemoryCalloc(1, sizeof(SCtgTbTSMACtx)); if (NULL == pTaskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } task.taskCtx = pTaskCtx; @@ -568,7 +568,7 @@ int32_t ctgInitGetTSMATask(SCtgJob* pJob, int32_t taskId, void* param) { SCtgTbTSMACtx* pTaskCtx = taosMemoryCalloc(1, sizeof(SCtgTbTSMACtx)); if (NULL == pTaskCtx) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } task.taskCtx = pTaskCtx; pTaskCtx->pNames = param; @@ -829,7 +829,7 @@ int32_t ctgInitJob(SCatalog* pCtg, SRequestConnInfo* pConn, SCtgJob** job, const *job = taosMemoryCalloc(1, sizeof(SCtgJob)); if (NULL == *job) { ctgError("failed to calloc, size:%d,QID:0x%" PRIx64, (int32_t)sizeof(SCtgJob), pConn->requestId); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgJob* pJob = *job; @@ -1340,7 +1340,7 @@ int32_t ctgDumpSvrVer(SCtgTask* pTask) { if (NULL == pJob->jobRes.pSvrVer) { pJob->jobRes.pSvrVer = taosMemoryCalloc(1, sizeof(SMetaRes)); if (NULL == pJob->jobRes.pSvrVer) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } } @@ -2289,7 +2289,7 @@ int32_t ctgHandleGetViewsRsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf* SViewMetaRsp* pRsp = *(SViewMetaRsp**)pMsgCtx->out; SViewMeta* pViewMeta = taosMemoryCalloc(1, sizeof(SViewMeta)); if (NULL == pViewMeta) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } code = dupViewMetaFromRsp(pRsp, pViewMeta); @@ -3271,7 +3271,7 @@ int32_t ctgLaunchGetDbCfgTask(SCtgTask* pTask) { } else { pTask->res = taosMemoryCalloc(1, sizeof(SDbCfgInfo)); if (NULL == pTask->res) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(pTask->res, &cfgInfo, sizeof(cfgInfo)); @@ -3299,7 +3299,7 @@ int32_t ctgLaunchGetDbInfoTask(SCtgTask* pTask) { pTask->res = taosMemoryCalloc(1, sizeof(SDbInfo)); if (NULL == pTask->res) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SDbInfo* pInfo = (SDbInfo*)pTask->res; @@ -3392,7 +3392,7 @@ int32_t ctgLaunchGetUserTask(SCtgTask* pTask) { rsp.pRawRes = taosMemoryCalloc(1, sizeof(SUserAuthRes)); if (NULL == rsp.pRawRes) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (TSDB_CODE_SUCCESS != pCtx->subTaskCode) { diff --git a/source/libs/catalog/src/ctgCache.c b/source/libs/catalog/src/ctgCache.c index 689bf900e2..01201a2480 100644 --- a/source/libs/catalog/src/ctgCache.c +++ b/source/libs/catalog/src/ctgCache.c @@ -546,7 +546,7 @@ int32_t ctgCopyTbMeta(SCatalog *pCtg, SCtgTbMetaCtx *ctx, SCtgDBCache **pDb, SCt } *pTableMeta = taosMemoryCalloc(1, metaSize + schemaExtSize); if (NULL == *pTableMeta) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(*pTableMeta, tbMeta, metaSize); @@ -566,7 +566,7 @@ int32_t ctgCopyTbMeta(SCatalog *pCtg, SCtgTbMetaCtx *ctx, SCtgDBCache **pDb, SCt int32_t metaSize = sizeof(SCTableMeta); *pTableMeta = taosMemoryCalloc(1, metaSize); if (NULL == *pTableMeta) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(*pTableMeta, tbMeta, metaSize); @@ -884,7 +884,7 @@ int32_t ctgEnqueue(SCatalog *pCtg, SCtgCacheOperation *operation) { qError("calloc %d failed", (int32_t)sizeof(SCtgQNode)); taosMemoryFree(operation->data); taosMemoryFree(operation); - CTG_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_RET(terrno); } node->op = operation; @@ -946,7 +946,7 @@ int32_t ctgDropDbCacheEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId) SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_DB_CACHE; @@ -984,7 +984,7 @@ int32_t ctgDropDbVgroupEnqueue(SCatalog *pCtg, const char *dbFName, bool syncOp) SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_DB_VGROUP; @@ -994,7 +994,7 @@ int32_t ctgDropDbVgroupEnqueue(SCatalog *pCtg, const char *dbFName, bool syncOp) if (NULL == msg) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgDropDbVgroupMsg)); taosMemoryFree(op); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } char *p = strchr(dbFName, '.'); @@ -1022,7 +1022,7 @@ int32_t ctgDropStbMetaEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_STB_META; @@ -1057,7 +1057,7 @@ int32_t ctgDropTbMetaEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_TB_META; @@ -1091,7 +1091,7 @@ int32_t ctgUpdateVgroupEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_VGROUP; @@ -1141,7 +1141,7 @@ int32_t ctgUpdateDbCfgEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_DB_CFG; @@ -1183,7 +1183,7 @@ int32_t ctgUpdateTbMetaEnqueue(SCatalog *pCtg, STableMetaOutput *output, bool sy SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_TB_META; @@ -1226,7 +1226,7 @@ int32_t ctgUpdateVgEpsetEnqueue(SCatalog *pCtg, char *dbFName, int32_t vgId, SEp SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_VG_EPSET; @@ -1259,7 +1259,7 @@ int32_t ctgUpdateUserEnqueue(SCatalog *pCtg, SGetUserAuthRsp *pAuth, bool syncOp SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_USER; @@ -1293,7 +1293,7 @@ int32_t ctgUpdateTbIndexEnqueue(SCatalog *pCtg, STableIndex **pIndex, bool syncO SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_TB_INDEX; @@ -1329,7 +1329,7 @@ int32_t ctgDropTbIndexEnqueue(SCatalog *pCtg, SName *pName, bool syncOp) { SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_TB_INDEX; @@ -1362,7 +1362,7 @@ int32_t ctgClearCacheEnqueue(SCatalog *pCtg, bool clearMeta, bool freeCtg, bool SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_CLEAR_CACHE; @@ -1396,7 +1396,7 @@ int32_t ctgUpdateViewMetaEnqueue(SCatalog *pCtg, SViewMetaRsp *pRsp, bool syncOp SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_VIEW_META; @@ -1440,7 +1440,7 @@ int32_t ctgDropViewMetaEnqueue(SCatalog *pCtg, const char *dbFName, uint64_t dbI SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_VIEW_META; @@ -1475,7 +1475,7 @@ int32_t ctgUpdateTbTSMAEnqueue(SCatalog *pCtg, STSMACache **pTsma, int32_t tsmaV SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_TB_TSMA; @@ -1510,7 +1510,7 @@ int32_t ctgDropTbTSMAEnqueue(SCatalog* pCtg, const STSMACache* pTsma, bool sync SCtgCacheOperation* op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_DROP_TB_TSMA; @@ -1520,7 +1520,7 @@ int32_t ctgDropTbTSMAEnqueue(SCatalog* pCtg, const STSMACache* pTsma, bool sync if (!msg) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgDropTbTSMAMsg)); taosMemoryFree(op); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } msg->pCtg = pCtg; @@ -1546,14 +1546,14 @@ static int32_t createDropAllTbTsmaCtgCacheOp(SCatalog* pCtg, const STSMACache* p SCtgCacheOperation* pOp = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == pOp) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SCtgDropTbTSMAMsg* pMsg = taosMemoryCalloc(1, sizeof(SCtgDropTbTSMAMsg)); if (NULL == pMsg) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgDropTbTSMAMsg)); taosMemoryFree(pOp); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } pOp->opId = CTG_OP_DROP_TB_TSMA; @@ -1634,7 +1634,7 @@ int32_t ctgUpdateDbTsmaVersionEnqueue(SCatalog* pCtg, int32_t tsmaVersion, const SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } op->opId = CTG_OP_UPDATE_DB_TSMA_VERSION; @@ -2753,7 +2753,7 @@ int32_t ctgOpDropTbIndex(SCtgCacheOperation *operation) { STableIndex *pIndex = taosMemoryCalloc(1, sizeof(STableIndex)); if (NULL == pIndex) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } TAOS_STRCPY(pIndex->tbName, msg->tbName); TAOS_STRCPY(pIndex->dbFName, msg->dbFName); @@ -2796,7 +2796,7 @@ int32_t ctgOpUpdateViewMeta(SCtgCacheOperation *operation) { pMeta = taosMemoryCalloc(1, sizeof(SViewMeta)); if (NULL == pMeta) { - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } CTG_ERR_JRET(dupViewMetaFromRsp(pRsp, pMeta)); @@ -3473,7 +3473,7 @@ int32_t ctgGetTbMetasFromCache(SCatalog *pCtg, SRequestConnInfo *pConn, SCtgTbMe pTableMeta = taosMemoryCalloc(1, metaSize + schemaExtSize); if (NULL == pTableMeta) { ctgReleaseTbMetaToCache(pCtg, dbCache, pCache); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(pTableMeta, tbMeta, metaSize); @@ -3526,7 +3526,7 @@ int32_t ctgGetTbMetasFromCache(SCatalog *pCtg, SRequestConnInfo *pConn, SCtgTbMe pTableMeta = taosMemoryCalloc(1, metaSize); if (NULL == pTableMeta) { ctgReleaseTbMetaToCache(pCtg, dbCache, pCache); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(pTableMeta, tbMeta, metaSize); @@ -3785,7 +3785,7 @@ int32_t ctgGetViewsFromCache(SCatalog *pCtg, SRequestConnInfo *pConn, SCtgViewsC SViewMeta *pViewMeta = taosMemoryCalloc(1, sizeof(SViewMeta)); if (NULL == pViewMeta) { ctgReleaseViewMetaToCache(pCtg, dbCache, pCache); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } TAOS_MEMCPY(pViewMeta, pCache->pMeta, sizeof(*pViewMeta)); @@ -3952,7 +3952,7 @@ int32_t ctgGetTbTSMAFromCache(SCatalog* pCtg, SCtgTbTSMACtx* pCtx, int32_t dbIdx STableTSMAInfoRsp *pRsp = taosMemoryCalloc(1, sizeof(STableTSMAInfoRsp)); if (!pRsp) { ctgReleaseTSMAToCache(pCtg, dbCache, pCache); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } pRsp->pTsmas = taosArrayInit(pCache->pTsmas->size, POINTER_BYTES); @@ -4048,7 +4048,7 @@ int32_t ctgGetTSMAFromCache(SCatalog* pCtg, SCtgTbTSMACtx* pCtx, SName* pTsmaNam res.pRes = taosMemoryCalloc(1, sizeof(STableTSMAInfoRsp)); if (!res.pRes) { tFreeAndClearTableTSMAInfo(pTsmaOut); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } STableTSMAInfoRsp* pRsp = res.pRes; diff --git a/source/libs/catalog/src/ctgRemote.c b/source/libs/catalog/src/ctgRemote.c index ef29907b96..4d96283e52 100644 --- a/source/libs/catalog/src/ctgRemote.c +++ b/source/libs/catalog/src/ctgRemote.c @@ -482,14 +482,14 @@ int32_t ctgMakeMsgSendInfo(SCtgJob* pJob, SArray* pTaskId, int32_t batchId, SArr SMsgSendInfo* msgSendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo)); if (NULL == msgSendInfo) { qError("calloc %d failed", (int32_t)sizeof(SMsgSendInfo)); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } SCtgTaskCallbackParam* param = taosMemoryCalloc(1, sizeof(SCtgTaskCallbackParam)); if (NULL == param) { qError("calloc %d failed", (int32_t)sizeof(SCtgTaskCallbackParam)); taosMemoryFree(msgSendInfo); - CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_JRET(terrno); } param->reqType = msgType; @@ -753,7 +753,7 @@ int32_t ctgBuildBatchReqMsg(SCtgBatch* pBatch, int32_t vgId, void** msg, int32_t *msg = taosMemoryCalloc(1, msgSize); if (NULL == (*msg)) { qError("calloc batchReq msg failed, size:%d", msgSize); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } if (tSerializeSBatchReq(*msg, msgSize, &batchReq) < 0) { qError("tSerializeSBatchReq failed"); @@ -928,7 +928,7 @@ int32_t ctgGetDBVgInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SBuildU if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(SUseDbOutput)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, tReq->msgIdx), reqType, pOut, input->db)); @@ -983,7 +983,7 @@ int32_t ctgGetDBCfgFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const char if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(SDbCfgInfo)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, (char*)dbFName)); @@ -1041,7 +1041,7 @@ int32_t ctgGetIndexInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(SIndexInfo)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, (char*)indexName)); @@ -1101,7 +1101,7 @@ int32_t ctgGetTbIndexFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SName* n if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(STableIndex)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, (char*)tbFName)); @@ -1159,7 +1159,7 @@ int32_t ctgGetUdfInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const ch if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(SFuncInfo)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, (char*)funcName)); @@ -1217,7 +1217,7 @@ int32_t ctgGetUserDbAuthFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(SGetUserAuthRsp)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, -1), reqType, pOut, (char*)user)); @@ -1280,7 +1280,7 @@ int32_t ctgGetTbMetaFromMnodeImpl(SCatalog* pCtg, SRequestConnInfo* pConn, const if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(STableMetaOutput)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, tReq->msgIdx), reqType, pOut, tbFName)); @@ -1353,7 +1353,7 @@ int32_t ctgGetTbMetaFromVnode(SCatalog* pCtg, SRequestConnInfo* pConn, const SNa if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(STableMetaOutput)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } SRequestConnInfo vConn = {.pTrans = pConn->pTrans, @@ -1597,7 +1597,7 @@ int32_t ctgGetViewInfoFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, SName* if (pTask) { void* pOut = taosMemoryCalloc(1, POINTER_BYTES); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, tReq->msgIdx), reqType, pOut, fullName)); @@ -1654,7 +1654,7 @@ int32_t ctgGetTbTSMAFromMnode(SCatalog* pCtg, SRequestConnInfo* pConn, const SNa if (pTask) { void* pOut = taosMemoryCalloc(1, sizeof(STableTSMAInfoRsp)); if (NULL == pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, tReq->msgIdx), reqType, pOut, (char*)tbFName)); @@ -1715,7 +1715,7 @@ int32_t ctgGetStreamProgressFromVnode(SCatalog* pCtg, SRequestConnInfo* pConn, c if (pTask) { SStreamProgressRsp* pOut = taosMemoryCalloc(1, sizeof(SStreamProgressRsp)); if (!pOut) { - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } CTG_ERR_RET(ctgUpdateMsgCtx(CTG_GET_TASK_MSGCTX(pTask, tReq->msgIdx), reqType, pOut, (char*)tbFName)); diff --git a/source/libs/catalog/src/ctgRent.c b/source/libs/catalog/src/ctgRent.c index 329aee1703..b4dfd0ebee 100755 --- a/source/libs/catalog/src/ctgRent.c +++ b/source/libs/catalog/src/ctgRent.c @@ -30,7 +30,7 @@ int32_t ctgMetaRentInit(SCtgRentMgmt *mgmt, uint32_t rentSec, int8_t type, int32 mgmt->slots = taosMemoryCalloc(1, msgSize); if (NULL == mgmt->slots) { qError("calloc %d failed", (int32_t)msgSize); - CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY); + CTG_ERR_RET(terrno); } mgmt->rentCacheSize = msgSize; diff --git a/source/libs/command/src/explain.c b/source/libs/command/src/explain.c index b9f79d1e00..886425c69b 100644 --- a/source/libs/command/src/explain.c +++ b/source/libs/command/src/explain.c @@ -123,13 +123,13 @@ int32_t qExplainInitCtx(SExplainCtx **pCtx, SHashObj *groupHash, bool verbose, d SExplainCtx *ctx = taosMemoryCalloc(1, sizeof(SExplainCtx)); if (NULL == ctx) { qError("calloc SExplainCtx failed"); - QRY_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_JRET(terrno); } SArray *rows = taosArrayInit(10, sizeof(SQueryExplainRowInfo)); if (NULL == rows) { qError("taosArrayInit SQueryExplainRowInfo failed"); - QRY_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY); + QRY_ERR_JRET(terrno); } char *tbuf = taosMemoryMalloc(TSDB_EXPLAIN_RESULT_ROW_SIZE); diff --git a/source/libs/function/src/builtins.c b/source/libs/function/src/builtins.c index bff7d6804b..4bc86eb0c6 100644 --- a/source/libs/function/src/builtins.c +++ b/source/libs/function/src/builtins.c @@ -234,7 +234,7 @@ static int32_t addTimezoneParam(SNodeList* pList) { pVal->datum.p = taosMemoryCalloc(1, len + VARSTR_HEADER_SIZE + 1); if (pVal->datum.p == NULL) { nodesDestroyNode((SNode*)pVal); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } varDataSetLen(pVal->datum.p, len); (void)strncpy(varDataVal(pVal->datum.p), pVal->literal, len); @@ -1266,7 +1266,7 @@ static int32_t validateHistogramBinDesc(char* binDescStr, int8_t binType, char* if (intervals == NULL) { (void)snprintf(errMsg, msgLen, "%s", msg9); cJSON_Delete(binDesc); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } cJSON* bin = binDesc->child; if (bin == NULL) { diff --git a/source/libs/function/src/builtinsimpl.c b/source/libs/function/src/builtinsimpl.c index 6397b92191..fa8cf243c4 100644 --- a/source/libs/function/src/builtinsimpl.c +++ b/source/libs/function/src/builtinsimpl.c @@ -1685,7 +1685,7 @@ int32_t stdPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); @@ -2447,7 +2447,7 @@ int32_t apercentilePartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { int32_t resultBytes = getApercentileMaxSize(); char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (pInfo->algo == APERCT_ALGO_TDIGEST) { @@ -3107,7 +3107,7 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { // todo check for failure char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pRes, resultBytes); @@ -4358,7 +4358,7 @@ int32_t spreadPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); @@ -4548,7 +4548,7 @@ int32_t elapsedPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); @@ -4654,7 +4654,7 @@ static int32_t getHistogramBinDesc(SHistoFuncInfo* pInfo, char* binDescStr, int8 if (NULL == intervals) { cJSON_Delete(binDesc); qError("histogram function out of memory"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (cJSON_IsNumber(width) && factor == NULL && binType == LINEAR_BIN) { // linear bin process @@ -4720,7 +4720,7 @@ static int32_t getHistogramBinDesc(SHistoFuncInfo* pInfo, char* binDescStr, int8 if (NULL == intervals) { cJSON_Delete(binDesc); qError("histogram function out of memory"); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } cJSON* bin = binDesc->child; if (bin == NULL) { @@ -4925,7 +4925,7 @@ int32_t histogramPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); @@ -5158,7 +5158,7 @@ int32_t hllPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); @@ -6993,7 +6993,7 @@ int32_t iratePartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); diff --git a/source/libs/function/src/detail/tavgfunction.c b/source/libs/function/src/detail/tavgfunction.c index df9edb9948..854260c354 100644 --- a/source/libs/function/src/detail/tavgfunction.c +++ b/source/libs/function/src/detail/tavgfunction.c @@ -854,7 +854,7 @@ int32_t avgPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { char* res = taosMemoryCalloc(resultBytes + VARSTR_HEADER_SIZE, sizeof(char)); int32_t code = TSDB_CODE_SUCCESS; if (NULL == res) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (void)memcpy(varDataVal(res), pInfo, resultBytes); varDataSetLen(res, resultBytes); diff --git a/source/libs/function/src/thistogram.c b/source/libs/function/src/thistogram.c index 8594b0584c..6dfad36542 100644 --- a/source/libs/function/src/thistogram.c +++ b/source/libs/function/src/thistogram.c @@ -594,7 +594,7 @@ int32_t tHistogramMerge(SHistogramInfo* pHisto1, SHistogramInfo* pHisto2, int32_ SHistBin* pHistoBins = taosMemoryCalloc(1, sizeof(SHistBin) * (pHisto1->numOfEntries + pHisto2->numOfEntries)); if (NULL == pHistoBins) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t i = 0, j = 0, k = 0; diff --git a/source/libs/function/src/tpercentile.c b/source/libs/function/src/tpercentile.c index ae0459427e..cc618f3f65 100644 --- a/source/libs/function/src/tpercentile.c +++ b/source/libs/function/src/tpercentile.c @@ -33,7 +33,7 @@ static int32_t loadDataFromFilePage(tMemBucket *pMemBucket, int32_t slotIdx, SFi *buffer = (SFilePage *)taosMemoryCalloc(1, pMemBucket->bytes * pMemBucket->pSlots[slotIdx].info.size + sizeof(SFilePage)); if (NULL == *buffer) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t groupId = getGroupId(pMemBucket->numOfSlots, slotIdx, pMemBucket->times); @@ -271,7 +271,7 @@ int32_t tMemBucketCreate(int32_t nElemSize, int16_t dataType, double minval, dou tMemBucket **pBucket) { *pBucket = (tMemBucket *)taosMemoryCalloc(1, sizeof(tMemBucket)); if (*pBucket == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } if (hasWindowOrGroup) { @@ -313,7 +313,7 @@ int32_t tMemBucketCreate(int32_t nElemSize, int16_t dataType, double minval, dou (*pBucket)->pSlots = (tMemBucketSlot *)taosMemoryCalloc((*pBucket)->numOfSlots, sizeof(tMemBucketSlot)); if ((*pBucket)->pSlots == NULL) { tMemBucketDestroy(*pBucket); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } resetSlotInfo((*pBucket)); diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index 2d8a926c72..adcce879eb 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -474,7 +474,7 @@ void udfdDeinitPythonPlugin(SUdfScriptPlugin *plugin) { int32_t udfdInitScriptPlugin(int8_t scriptType) { SUdfScriptPlugin *plugin = taosMemoryCalloc(1, sizeof(SUdfScriptPlugin)); if (plugin == NULL) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } int32_t err = 0; switch (scriptType) { From 32222375e69acd94a9415a512d1d07aa04217c63 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 3 Sep 2024 10:32:06 +0800 Subject: [PATCH 4/5] enh: improve error handle in message encode and decode --- source/common/src/tmsg.c | 171 +++++++++++--------- source/libs/sync/src/syncRequestVoteReply.c | 6 +- 2 files changed, 98 insertions(+), 79 deletions(-) diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index f02463656d..579ffaa889 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -153,7 +153,9 @@ int32_t tGetSubmitMsgNext(SSubmitMsgIter *pIter, SSubmitBlk **pPBlock) { } int32_t tInitSubmitBlkIter(SSubmitMsgIter *pMsgIter, SSubmitBlk *pBlock, SSubmitBlkIter *pIter) { - if (pMsgIter->dataLen <= 0) return -1; + if (pMsgIter->dataLen <= 0) { + return TSDB_CODE_INVALID_PARA; + } pIter->totalLen = pMsgIter->dataLen; pIter->len = 0; pIter->row = (STSRow *)(pBlock->data + pMsgIter->schemaLen); @@ -174,27 +176,6 @@ STSRow *tGetSubmitBlkNext(SSubmitBlkIter *pIter) { } } -#ifdef BUILD_NO_CALL -int32_t tPrintFixedSchemaSubmitReq(SSubmitReq *pReq, STSchema *pTschema) { - SSubmitMsgIter msgIter = {0}; - if (tInitSubmitMsgIter(pReq, &msgIter) < 0) return -1; - while (true) { - SSubmitBlk *pBlock = NULL; - if (tGetSubmitMsgNext(&msgIter, &pBlock) < 0) return -1; - if (pBlock == NULL) break; - SSubmitBlkIter blkIter = {0}; - tInitSubmitBlkIter(&msgIter, pBlock, &blkIter); - STSRowIter rowIter = {0}; - tdSTSRowIterInit(&rowIter, pTschema); - STSRow *row; - while ((row = tGetSubmitBlkNext(&blkIter)) != NULL) { - tdSRowPrint(row, pTschema, "stream"); - } - } - return 0; -} -#endif - int32_t tEncodeSEpSet(SEncoder *pEncoder, const SEpSet *pEp) { TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pEp->inUse)); TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pEp->numOfEps)); @@ -346,14 +327,18 @@ static int32_t tDeserializeSClientHbReq(SDecoder *pDecoder, SClientHbReq *pReq) TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &queryNum)); if (queryNum) { pReq->query = taosMemoryCalloc(1, sizeof(*pReq->query)); - if (NULL == pReq->query) return -1; + if (NULL == pReq->query) { + return terrno; + } TAOS_CHECK_RETURN(tDecodeU32(pDecoder, &pReq->query->connId)); int32_t num = 0; TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &num)); if (num > 0) { pReq->query->queryDesc = taosArrayInit(num, sizeof(SQueryDesc)); - if (NULL == pReq->query->queryDesc) return -1; + if (NULL == pReq->query->queryDesc) { + return terrno; + } for (int32_t i = 0; i < num; ++i) { SQueryDesc desc = {0}; @@ -371,7 +356,9 @@ static int32_t tDeserializeSClientHbReq(SDecoder *pDecoder, SClientHbReq *pReq) TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &snum)); if (snum > 0) { desc.subDesc = taosArrayInit(snum, sizeof(SQuerySubDesc)); - if (NULL == desc.subDesc) return -1; + if (NULL == desc.subDesc) { + return terrno; + } for (int32_t m = 0; m < snum; ++m) { SQuerySubDesc sDesc = {0}; @@ -457,7 +444,9 @@ static int32_t tDeserializeSClientHbRsp(SDecoder *pDecoder, SClientHbRsp *pRsp) TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &queryNum)); if (queryNum) { pRsp->query = taosMemoryCalloc(1, sizeof(*pRsp->query)); - if (NULL == pRsp->query) return -1; + if (NULL == pRsp->query) { + return terrno; + } TAOS_CHECK_RETURN(tDecodeU32(pDecoder, &pRsp->query->connId)); TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pRsp->query->killRid)); TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->query->totalDnodes)); @@ -480,7 +469,9 @@ static int32_t tDeserializeSClientHbRsp(SDecoder *pDecoder, SClientHbRsp *pRsp) int32_t kvNum = 0; TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &kvNum)); pRsp->info = taosArrayInit(kvNum, sizeof(SKv)); - if (pRsp->info == NULL) return -1; + if (pRsp->info == NULL) { + return terrno; + } for (int32_t i = 0; i < kvNum; i++) { SKv kv = {0}; TAOS_CHECK_RETURN(tDecodeSKv(pDecoder, &kv)); @@ -492,108 +483,136 @@ static int32_t tDeserializeSClientHbRsp(SDecoder *pDecoder, SClientHbRsp *pRsp) int32_t tSerializeSClientHbBatchReq(void *buf, int32_t bufLen, const SClientHbBatchReq *pBatchReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen = 0; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeI64(&encoder, pBatchReq->reqId) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchReq->reqId)); int32_t reqNum = taosArrayGetSize(pBatchReq->reqs); - if (tEncodeI32(&encoder, reqNum) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, reqNum)); for (int32_t i = 0; i < reqNum; i++) { SClientHbReq *pReq = taosArrayGet(pBatchReq->reqs, i); - if (tSerializeSClientHbReq(&encoder, pReq) < 0) return -1; + TAOS_CHECK_EXIT(tSerializeSClientHbReq(&encoder, pReq)); } - if (tEncodeI64(&encoder, pBatchReq->ipWhiteList) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchReq->ipWhiteList)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSClientHbBatchReq(void *buf, int32_t bufLen, SClientHbBatchReq *pBatchReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeI64(&decoder, &pBatchReq->reqId) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchReq->reqId)); int32_t reqNum = 0; - if (tDecodeI32(&decoder, &reqNum) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &reqNum)); if (reqNum > 0) { pBatchReq->reqs = taosArrayInit(reqNum, sizeof(SClientHbReq)); - if (NULL == pBatchReq->reqs) return -1; + if (NULL == pBatchReq->reqs) { + return terrno; + } } for (int32_t i = 0; i < reqNum; i++) { SClientHbReq req = {0}; - if (tDeserializeSClientHbReq(&decoder, &req) < 0) return -1; - if (!taosArrayPush(pBatchReq->reqs, &req)) return -1; + TAOS_CHECK_EXIT(tDeserializeSClientHbReq(&decoder, &req)); + if (!taosArrayPush(pBatchReq->reqs, &req)) { + TAOS_CHECK_EXIT(terrno); + } } if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI64(&decoder, &pBatchReq->ipWhiteList) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchReq->ipWhiteList)); } tEndDecode(&decoder); + +_exit: tDecoderClear(&decoder); - return 0; + return code; } int32_t tSerializeSClientHbBatchRsp(void *buf, int32_t bufLen, const SClientHbBatchRsp *pBatchRsp) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeI64(&encoder, pBatchRsp->reqId) < 0) return -1; - if (tEncodeI64(&encoder, pBatchRsp->rspId) < 0) return -1; - if (tEncodeI32(&encoder, pBatchRsp->svrTimestamp) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchRsp->reqId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchRsp->rspId)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pBatchRsp->svrTimestamp)); int32_t rspNum = taosArrayGetSize(pBatchRsp->rsps); - if (tEncodeI32(&encoder, rspNum) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, rspNum)); for (int32_t i = 0; i < rspNum; i++) { SClientHbRsp *pRsp = taosArrayGet(pBatchRsp->rsps, i); - if (tSerializeSClientHbRsp(&encoder, pRsp) < 0) return -1; + TAOS_CHECK_EXIT(tSerializeSClientHbRsp(&encoder, pRsp)); } - if (tSerializeSMonitorParas(&encoder, &pBatchRsp->monitorParas) < 0) return -1; + TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pBatchRsp->monitorParas)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSClientHbBatchRsp(void *buf, int32_t bufLen, SClientHbBatchRsp *pBatchRsp) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - int32_t ret = -1; - if (tStartDecode(&decoder) < 0) goto _END; - if (tDecodeI64(&decoder, &pBatchRsp->reqId) < 0) goto _END; - if (tDecodeI64(&decoder, &pBatchRsp->rspId) < 0) goto _END; - if (tDecodeI32(&decoder, &pBatchRsp->svrTimestamp) < 0) goto _END; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchRsp->reqId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchRsp->rspId)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pBatchRsp->svrTimestamp)); int32_t rspNum = 0; - if (tDecodeI32(&decoder, &rspNum) < 0) goto _END; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &rspNum)); if (pBatchRsp->rsps == NULL) { - if ((pBatchRsp->rsps = taosArrayInit(rspNum, sizeof(SClientHbRsp))) == NULL) goto _END; + if ((pBatchRsp->rsps = taosArrayInit(rspNum, sizeof(SClientHbRsp))) == NULL) { + TAOS_CHECK_EXIT(terrno); + } } for (int32_t i = 0; i < rspNum; i++) { SClientHbRsp rsp = {0}; - if (tDeserializeSClientHbRsp(&decoder, &rsp) < 0) goto _END; - if (taosArrayPush(pBatchRsp->rsps, &rsp) == NULL) goto _END; + TAOS_CHECK_EXIT(tDeserializeSClientHbRsp(&decoder, &rsp)); + if (taosArrayPush(pBatchRsp->rsps, &rsp) == NULL) { + TAOS_CHECK_EXIT(terrno); + } } if (!tDecodeIsEnd(&decoder)) { - if (tDeserializeSMonitorParas(&decoder, &pBatchRsp->monitorParas) < 0) goto _END; + TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pBatchRsp->monitorParas)); } tEndDecode(&decoder); - ret = 0; -_END: +_exit: tDecoderClear(&decoder); - return ret; + return code; } int32_t tSerializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) { @@ -5264,27 +5283,27 @@ int32_t tDeserializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) { tDecoderInit(&decoder, buf, bufLen); int32_t ret = -1; - if (tStartDecode(&decoder) < 0) goto _END; - if (tDecodeI32(&decoder, &pRsp->acctId) < 0) goto _END; - if (tDecodeI64(&decoder, &pRsp->clusterId) < 0) goto _END; - if (tDecodeU32(&decoder, &pRsp->connId) < 0) goto _END; - if (tDecodeI32(&decoder, &pRsp->dnodeNum) < 0) goto _END; - if (tDecodeI8(&decoder, &pRsp->superUser) < 0) goto _END; - if (tDecodeI8(&decoder, &pRsp->sysInfo) < 0) goto _END; - if (tDecodeI8(&decoder, &pRsp->connType) < 0) goto _END; - if (tDecodeSEpSet(&decoder,&pRsp->epSet) < 0) goto _END; - if (tDecodeI32(&decoder, &pRsp->svrTimestamp) < 0) goto _END; - if (tDecodeCStrTo(&decoder, pRsp->sVer) < 0) goto _END; - if (tDecodeCStrTo(&decoder, pRsp->sDetailVer) < 0) goto _END; + if (tStartDecode(&decoder) < 0) goto _END; + if (tDecodeI32(&decoder, &pRsp->acctId) < 0) goto _END; + if (tDecodeI64(&decoder, &pRsp->clusterId) < 0) goto _END; + if (tDecodeU32(&decoder, &pRsp->connId) < 0) goto _END; + if (tDecodeI32(&decoder, &pRsp->dnodeNum) < 0) goto _END; + if (tDecodeI8(&decoder, &pRsp->superUser) < 0) goto _END; + if (tDecodeI8(&decoder, &pRsp->sysInfo) < 0) goto _END; + if (tDecodeI8(&decoder, &pRsp->connType) < 0) goto _END; + if (tDecodeSEpSet(&decoder, &pRsp->epSet) < 0) goto _END; + if (tDecodeI32(&decoder, &pRsp->svrTimestamp) < 0) goto _END; + if (tDecodeCStrTo(&decoder, pRsp->sVer) < 0) goto _END; + if (tDecodeCStrTo(&decoder, pRsp->sDetailVer) < 0) goto _END; if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI32(&decoder, &pRsp->passVer) < 0) goto _END; + if (tDecodeI32(&decoder, &pRsp->passVer) < 0) goto _END; } else { pRsp->passVer = 0; } // since 3.0.7.0 if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI32(&decoder, &pRsp->authVer) < 0) goto _END; + if (tDecodeI32(&decoder, &pRsp->authVer) < 0) goto _END; } else { pRsp->authVer = 0; } diff --git a/source/libs/sync/src/syncRequestVoteReply.c b/source/libs/sync/src/syncRequestVoteReply.c index add237c2d0..9f2d746755 100644 --- a/source/libs/sync/src/syncRequestVoteReply.c +++ b/source/libs/sync/src/syncRequestVoteReply.c @@ -53,14 +53,14 @@ int32_t syncNodeOnRequestVoteReply(SSyncNode* ths, const SRpcMsg* pRpcMsg) { if (pMsg->term < currentTerm) { syncLogRecvRequestVoteReply(ths, pMsg, "drop stale response"); - TAOS_RETURN(TSDB_CODE_FAILED); + TAOS_RETURN(TSDB_CODE_SYN_WRONG_TERM); } if (pMsg->term > currentTerm) { syncLogRecvRequestVoteReply(ths, pMsg, "error term"); syncNodeStepDown(ths, pMsg->term); - TAOS_RETURN(TSDB_CODE_FAILED); + TAOS_RETURN(TSDB_CODE_SYN_WRONG_TERM); } syncLogRecvRequestVoteReply(ths, pMsg, ""); @@ -73,7 +73,7 @@ int32_t syncNodeOnRequestVoteReply(SSyncNode* ths, const SRpcMsg* pRpcMsg) { sNError(ths, "vote respond error vote-respond-mgr term:%" PRIu64 ", msg term:%" PRIu64 "", ths->pVotesRespond->term, pMsg->term); - TAOS_RETURN(TSDB_CODE_FAILED); + TAOS_RETURN(TSDB_CODE_SYN_WRONG_TERM); } votesRespondAdd(ths->pVotesRespond, pMsg); From b85e02e9887f201c560eac29f0fa1c865e5c4533 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 3 Sep 2024 11:37:59 +0800 Subject: [PATCH 5/5] enh: error handle in message encode and decode --- source/common/src/tmsg.c | 903 ++++++++++++++++++++++----------------- 1 file changed, 520 insertions(+), 383 deletions(-) diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index f02463656d..0ec9640fe7 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -598,160 +598,184 @@ _END: int32_t tSerializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->name) < 0) return -1; - if (tEncodeI8(&encoder, pReq->igExists) < 0) return -1; - if (tEncodeI8(&encoder, pReq->source) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->source)); for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) { - if (tEncodeI8(&encoder, pReq->reserved[i]) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->reserved[i])); } - if (tEncodeI64(&encoder, pReq->suid) < 0) return -1; - if (tEncodeI64(&encoder, pReq->delay1) < 0) return -1; - if (tEncodeI64(&encoder, pReq->delay2) < 0) return -1; - if (tEncodeI64(&encoder, pReq->watermark1) < 0) return -1; - if (tEncodeI64(&encoder, pReq->watermark2) < 0) return -1; - if (tEncodeI32(&encoder, pReq->ttl) < 0) return -1; - if (tEncodeI32(&encoder, pReq->colVer) < 0) return -1; - if (tEncodeI32(&encoder, pReq->tagVer) < 0) return -1; - if (tEncodeI32(&encoder, pReq->numOfColumns) < 0) return -1; - if (tEncodeI32(&encoder, pReq->numOfTags) < 0) return -1; - if (tEncodeI32(&encoder, pReq->numOfFuncs) < 0) return -1; - if (tEncodeI32(&encoder, pReq->commentLen) < 0) return -1; - if (tEncodeI32(&encoder, pReq->ast1Len) < 0) return -1; - if (tEncodeI32(&encoder, pReq->ast2Len) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->delay1)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->delay2)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark1)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark2)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ttl)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->colVer)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tagVer)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfColumns)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfTags)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfFuncs)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->commentLen)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ast1Len)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ast2Len)); for (int32_t i = 0; i < pReq->numOfColumns; ++i) { SFieldWithOptions *pField = taosArrayGet(pReq->pColumns, i); - if (tEncodeI8(&encoder, pField->type) < 0) return -1; - if (tEncodeI8(&encoder, pField->flags) < 0) return -1; - if (tEncodeI32(&encoder, pField->bytes) < 0) return -1; - if (tEncodeCStr(&encoder, pField->name) < 0) return -1; - if (tEncodeU32(&encoder, pField->compress) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->flags)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name)); + TAOS_CHECK_EXIT(tEncodeU32(&encoder, pField->compress)); } for (int32_t i = 0; i < pReq->numOfTags; ++i) { SField *pField = taosArrayGet(pReq->pTags, i); - if (tEncodeI8(&encoder, pField->type) < 0) return -1; - if (tEncodeI8(&encoder, pField->flags) < 0) return -1; - if (tEncodeI32(&encoder, pField->bytes) < 0) return -1; - if (tEncodeCStr(&encoder, pField->name) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->flags)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name)); } for (int32_t i = 0; i < pReq->numOfFuncs; ++i) { const char *pFunc = taosArrayGet(pReq->pFuncs, i); - if (tEncodeCStr(&encoder, pFunc) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pFunc)); } if (pReq->commentLen > 0) { - if (tEncodeCStr(&encoder, pReq->pComment) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pComment)); } if (pReq->ast1Len > 0) { - if (tEncodeBinary(&encoder, pReq->pAst1, pReq->ast1Len) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->pAst1, pReq->ast1Len)); } if (pReq->ast2Len > 0) { - if (tEncodeBinary(&encoder, pReq->pAst2, pReq->ast2Len) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->pAst2, pReq->ast2Len)); } - if (tEncodeI64(&encoder, pReq->deleteMark1) < 0) return -1; - if (tEncodeI64(&encoder, pReq->deleteMark2) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark1)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark2)); ENCODESQL(); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->igExists) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->source) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->source)); for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) { - if (tDecodeI8(&decoder, &pReq->reserved[i]) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->reserved[i])); } - if (tDecodeI64(&decoder, &pReq->suid) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->delay1) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->delay2) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->watermark1) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->watermark2) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->ttl) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->colVer) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->tagVer) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->numOfColumns) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->numOfTags) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->numOfFuncs) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->commentLen) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->ast1Len) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->ast2Len) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->delay1)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->delay2)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark1)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark2)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ttl)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->colVer)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tagVer)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfColumns)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfTags)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfFuncs)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->commentLen)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ast1Len)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ast2Len)); - if ((pReq->pColumns = taosArrayInit(pReq->numOfColumns, sizeof(SFieldWithOptions))) == NULL) return -1; - if ((pReq->pTags = taosArrayInit(pReq->numOfTags, sizeof(SField))) == NULL) return -1; - if ((pReq->pFuncs = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN)) == NULL) return -1; + if ((pReq->pColumns = taosArrayInit(pReq->numOfColumns, sizeof(SFieldWithOptions))) == NULL) { + TAOS_CHECK_EXIT(terrno); + } + if ((pReq->pTags = taosArrayInit(pReq->numOfTags, sizeof(SField))) == NULL) { + TAOS_CHECK_EXIT(terrno); + } + if ((pReq->pFuncs = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN)) == NULL) { + TAOS_CHECK_EXIT(terrno); + } for (int32_t i = 0; i < pReq->numOfColumns; ++i) { SFieldWithOptions field = {0}; - if (tDecodeI8(&decoder, &field.type) < 0) return -1; - if (tDecodeI8(&decoder, &field.flags) < 0) return -1; - if (tDecodeI32(&decoder, &field.bytes) < 0) return -1; - if (tDecodeCStrTo(&decoder, field.name) < 0) return -1; - if (tDecodeU32(&decoder, &field.compress) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.flags)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name)); + TAOS_CHECK_EXIT(tDecodeU32(&decoder, &field.compress)); if (taosArrayPush(pReq->pColumns, &field) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } for (int32_t i = 0; i < pReq->numOfTags; ++i) { SField field = {0}; - if (tDecodeI8(&decoder, &field.type) < 0) return -1; - if (tDecodeI8(&decoder, &field.flags) < 0) return -1; - if (tDecodeI32(&decoder, &field.bytes) < 0) return -1; - if (tDecodeCStrTo(&decoder, field.name) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.flags)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name)); if (taosArrayPush(pReq->pTags, &field) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } for (int32_t i = 0; i < pReq->numOfFuncs; ++i) { char pFunc[TSDB_FUNC_NAME_LEN] = {0}; - if (tDecodeCStrTo(&decoder, pFunc) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pFunc)); if (taosArrayPush(pReq->pFuncs, pFunc) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } if (pReq->commentLen > 0) { pReq->pComment = taosMemoryMalloc(pReq->commentLen + 1); - if (pReq->pComment == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->pComment) < 0) return -1; + if (pReq->pComment == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pComment)); } if (pReq->ast1Len > 0) { pReq->pAst1 = taosMemoryMalloc(pReq->ast1Len); - if (pReq->pAst1 == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->pAst1) < 0) return -1; + if (pReq->pAst1 == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pAst1)); } if (pReq->ast2Len > 0) { pReq->pAst2 = taosMemoryMalloc(pReq->ast2Len); - if (pReq->pAst2 == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->pAst2) < 0) return -1; + if (pReq->pAst2 == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pAst2)); } - if (tDecodeI64(&decoder, &pReq->deleteMark1) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->deleteMark2) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark1)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark2)); DECODESQL(); tEndDecode(&decoder); + +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSMCreateStbReq(SMCreateStbReq *pReq) { @@ -766,134 +790,161 @@ void tFreeSMCreateStbReq(SMCreateStbReq *pReq) { int32_t tSerializeSMDropStbReq(void *buf, int32_t bufLen, SMDropStbReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->name) < 0) return -1; - if (tEncodeI8(&encoder, pReq->igNotExists) < 0) return -1; - if (tEncodeI8(&encoder, pReq->source) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->source)); for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) { - if (tEncodeI8(&encoder, pReq->reserved[i]) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->reserved[i])); } - if (tEncodeI64(&encoder, pReq->suid) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid)); ENCODESQL(); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSMDropStbReq(void *buf, int32_t bufLen, SMDropStbReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->igNotExists) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->source) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->source)); for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) { - if (tDecodeI8(&decoder, &pReq->reserved[i]) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->reserved[i])); } - if (tDecodeI64(&decoder, &pReq->suid) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid)); DECODESQL(); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSMDropStbReq(SMDropStbReq *pReq) { FREESQL(); } int32_t tSerializeSMAlterStbReq(void *buf, int32_t bufLen, SMAlterStbReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->name) < 0) return -1; - if (tEncodeI8(&encoder, pReq->alterType) < 0) return -1; - if (tEncodeI32(&encoder, pReq->numOfFields) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->alterType)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfFields)); // if (pReq->alterType == ) for (int32_t i = 0; i < pReq->numOfFields; ++i) { if (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) { SFieldWithOptions *pField = taosArrayGet(pReq->pFields, i); - if (tEncodeI8(&encoder, pField->type) < 0) return -1; - if (tEncodeI32(&encoder, pField->bytes) < 0) return -1; - if (tEncodeCStr(&encoder, pField->name) < 0) return -1; - if (tEncodeU32(&encoder, pField->compress) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name)); + TAOS_CHECK_EXIT(tEncodeU32(&encoder, pField->compress)); } else { SField *pField = taosArrayGet(pReq->pFields, i); - if (tEncodeI8(&encoder, pField->type) < 0) return -1; - if (tEncodeI32(&encoder, pField->bytes) < 0) return -1; - if (tEncodeCStr(&encoder, pField->name) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name)); } } - if (tEncodeI32(&encoder, pReq->ttl) < 0) return -1; - if (tEncodeI32(&encoder, pReq->commentLen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ttl)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->commentLen)); if (pReq->commentLen > 0) { - if (tEncodeCStr(&encoder, pReq->comment) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->comment)); } ENCODESQL(); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSMAlterStbReq(void *buf, int32_t bufLen, SMAlterStbReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->alterType) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->numOfFields) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->alterType)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfFields)); pReq->pFields = taosArrayInit(pReq->numOfFields, sizeof(SField)); if (pReq->pFields == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } for (int32_t i = 0; i < pReq->numOfFields; ++i) { if (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) { taosArrayDestroy(pReq->pFields); - if ((pReq->pFields = taosArrayInit(pReq->numOfFields, sizeof(SFieldWithOptions))) == NULL) return -1; + if ((pReq->pFields = taosArrayInit(pReq->numOfFields, sizeof(SFieldWithOptions))) == NULL) { + TAOS_CHECK_EXIT(terrno); + } SFieldWithOptions field = {0}; - if (tDecodeI8(&decoder, &field.type) < 0) return -1; - if (tDecodeI32(&decoder, &field.bytes) < 0) return -1; - if (tDecodeCStrTo(&decoder, field.name) < 0) return -1; - if (tDecodeU32(&decoder, &field.compress) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name)); + TAOS_CHECK_EXIT(tDecodeU32(&decoder, &field.compress)); if (taosArrayPush(pReq->pFields, &field) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } else { SField field = {0}; - if (tDecodeI8(&decoder, &field.type) < 0) return -1; - if (tDecodeI32(&decoder, &field.bytes) < 0) return -1; - if (tDecodeCStrTo(&decoder, field.name) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name)); if (taosArrayPush(pReq->pFields, &field) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } } - if (tDecodeI32(&decoder, &pReq->ttl) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->commentLen) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ttl)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->commentLen)); if (pReq->commentLen > 0) { pReq->comment = taosMemoryMalloc(pReq->commentLen + 1); - if (pReq->comment == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->comment) < 0) return -1; + if (pReq->comment == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->comment)); } DECODESQL(); tEndDecode(&decoder); + +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSMAltertbReq(SMAlterStbReq *pReq) { @@ -905,146 +956,181 @@ void tFreeSMAltertbReq(SMAlterStbReq *pReq) { int32_t tSerializeSEpSet(void *buf, int32_t bufLen, const SEpSet *pEpset) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeSEpSet(&encoder, pEpset) < 0) return -1; + + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeSEpSet(&encoder, pEpset)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; + +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSEpSet(void *buf, int32_t bufLen, SEpSet *pEpset) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; + tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeSEpSet(&decoder, pEpset) < 0) return -1; + + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeSEpSet(&decoder, pEpset)); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - return 0; + return code; } int32_t tSerializeSMCreateSmaReq(void *buf, int32_t bufLen, SMCreateSmaReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->name) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->stb) < 0) return -1; - if (tEncodeI8(&encoder, pReq->igExists) < 0) return -1; - if (tEncodeI8(&encoder, pReq->intervalUnit) < 0) return -1; - if (tEncodeI8(&encoder, pReq->slidingUnit) < 0) return -1; - if (tEncodeI8(&encoder, pReq->timezone) < 0) return -1; - if (tEncodeI32(&encoder, pReq->dstVgId) < 0) return -1; - if (tEncodeI64(&encoder, pReq->interval) < 0) return -1; - if (tEncodeI64(&encoder, pReq->offset) < 0) return -1; - if (tEncodeI64(&encoder, pReq->sliding) < 0) return -1; - if (tEncodeI64(&encoder, pReq->watermark) < 0) return -1; - if (tEncodeI64(&encoder, pReq->maxDelay) < 0) return -1; - if (tEncodeI32(&encoder, pReq->exprLen) < 0) return -1; - if (tEncodeI32(&encoder, pReq->tagsFilterLen) < 0) return -1; - if (tEncodeI32(&encoder, pReq->sqlLen) < 0) return -1; - if (tEncodeI32(&encoder, pReq->astLen) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->stb)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->intervalUnit)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->slidingUnit)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->timezone)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dstVgId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->interval)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->offset)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->sliding)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->maxDelay)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->exprLen)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tagsFilterLen)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sqlLen)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->astLen)); if (pReq->exprLen > 0) { - if (tEncodeBinary(&encoder, pReq->expr, pReq->exprLen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->expr, pReq->exprLen)); } if (pReq->tagsFilterLen > 0) { - if (tEncodeBinary(&encoder, pReq->tagsFilter, pReq->tagsFilterLen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->tagsFilter, pReq->tagsFilterLen)); } if (pReq->sqlLen > 0) { - if (tEncodeBinary(&encoder, pReq->sql, pReq->sqlLen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->sql, pReq->sqlLen)); } if (pReq->astLen > 0) { - if (tEncodeBinary(&encoder, pReq->ast, pReq->astLen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->ast, pReq->astLen)); } - if (tEncodeI64(&encoder, pReq->deleteMark) < 0) return -1; - if (tEncodeI64(&encoder, pReq->lastTs) < 0) return -1; - if (tEncodeI64(&encoder, pReq->normSourceTbUid) < 0) return -1; - if (tEncodeI32(&encoder, taosArrayGetSize(pReq->pVgroupVerList)) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->lastTs)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->normSourceTbUid)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, taosArrayGetSize(pReq->pVgroupVerList))); for (int32_t i = 0; i < taosArrayGetSize(pReq->pVgroupVerList); ++i) { SVgroupVer *p = taosArrayGet(pReq->pVgroupVerList, i); - if (tEncodeI32(&encoder, p->vgId) < 0) return -1; - if (tEncodeI64(&encoder, p->ver) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, p->vgId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, p->ver)); } - if (tEncodeI8(&encoder, pReq->recursiveTsma) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->baseTsmaName) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->recursiveTsma)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->baseTsmaName)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSMCreateSmaReq(void *buf, int32_t bufLen, SMCreateSmaReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->stb) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->igExists) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->intervalUnit) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->slidingUnit) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->timezone) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->dstVgId) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->interval) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->offset) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->sliding) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->watermark) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->maxDelay) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->exprLen) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->tagsFilterLen) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->sqlLen) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->astLen) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->stb)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->intervalUnit)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->slidingUnit)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->timezone)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dstVgId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->interval)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->offset)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->sliding)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->maxDelay)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->exprLen)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tagsFilterLen)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sqlLen)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->astLen)); if (pReq->exprLen > 0) { pReq->expr = taosMemoryMalloc(pReq->exprLen); - if (pReq->expr == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->expr) < 0) return -1; + if (pReq->expr == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->expr)); } if (pReq->tagsFilterLen > 0) { pReq->tagsFilter = taosMemoryMalloc(pReq->tagsFilterLen); - if (pReq->tagsFilter == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->tagsFilter) < 0) return -1; + if (pReq->tagsFilter == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tagsFilter)); } if (pReq->sqlLen > 0) { pReq->sql = taosMemoryMalloc(pReq->sqlLen); - if (pReq->sql == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->sql) < 0) return -1; + if (pReq->sql == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->sql)); } if (pReq->astLen > 0) { pReq->ast = taosMemoryMalloc(pReq->astLen); - if (pReq->ast == NULL) return -1; - if (tDecodeCStrTo(&decoder, pReq->ast) < 0) return -1; + if (pReq->ast == NULL) { + TAOS_CHECK_EXIT(terrno); + } + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->ast)); } - if (tDecodeI64(&decoder, &pReq->deleteMark) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->lastTs) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->normSourceTbUid) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->lastTs)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->normSourceTbUid)); int32_t numOfVgVer; - if (tDecodeI32(&decoder, &numOfVgVer) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfVgVer)); if (numOfVgVer > 0) { pReq->pVgroupVerList = taosArrayInit(numOfVgVer, sizeof(SVgroupVer)); if (pReq->pVgroupVerList == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } for (int32_t i = 0; i < numOfVgVer; ++i) { SVgroupVer v = {0}; - if (tDecodeI32(&decoder, &v.vgId) < 0) return -1; - if (tDecodeI64(&decoder, &v.ver) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &v.vgId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &v.ver)); if (taosArrayPush(pReq->pVgroupVerList, &v) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } } - if (tDecodeI8(&decoder, &pReq->recursiveTsma) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->baseTsmaName) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->recursiveTsma)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->baseTsmaName)); tEndDecode(&decoder); + +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSMCreateSmaReq(SMCreateSmaReq *pReq) { @@ -1057,63 +1143,86 @@ void tFreeSMCreateSmaReq(SMCreateSmaReq *pReq) { int32_t tSerializeSMDropSmaReq(void *buf, int32_t bufLen, SMDropSmaReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->name) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists)); - if (tEncodeI8(&encoder, pReq->igNotExists) < 0) return -1; tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSMDropSmaReq(void *buf, int32_t bufLen, SMDropSmaReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->igNotExists) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists)); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - return 0; + return code; } int32_t tSerializeSCreateTagIdxReq(void *buf, int32_t bufLen, SCreateTagIndexReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->dbFName) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->stbName) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->colName) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->idxName) < 0) return -1; - if (tEncodeI8(&encoder, pReq->idxType) < 0) return -1; + + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->stbName)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->colName)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->idxName)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->idxType)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } + int32_t tDeserializeSCreateTagIdxReq(void *buf, int32_t bufLen, SCreateTagIndexReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - - if (tDecodeCStrTo(&decoder, pReq->dbFName) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->stbName) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->colName) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->idxName) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->idxType) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->stbName)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->colName)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->idxName)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->idxType)); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - return 0; + return code; } // int32_t tSerializeSDropTagIdxReq(void *buf, int32_t bufLen, SDropTagIndexReq *pReq) { // SEncoder encoder = {0}; @@ -1130,37 +1239,50 @@ int32_t tDeserializeSCreateTagIdxReq(void *buf, int32_t bufLen, SCreateTagIndexR // } int32_t tDeserializeSDropTagIdxReq(void *buf, int32_t bufLen, SDropTagIndexReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->name) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->igNotExists) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists)); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - - return 0; + return code; } int32_t tSerializeSMCreateFullTextReq(void *buf, int32_t bufLen, SMCreateFullTextReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } + int32_t tDeserializeSMCreateFullTextReq(void *buf, int32_t bufLen, SMCreateFullTextReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; - + TAOS_CHECK_EXIT(tStartDecode(&decoder)); tEndDecode(&decoder); +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSMCreateFullTextReq(SMCreateFullTextReq *pReq) { // impl later @@ -1195,55 +1317,61 @@ void tFreeSMCreateFullTextReq(SMCreateFullTextReq *pReq) { int32_t tSerializeSNotifyReq(void *buf, int32_t bufLen, SNotifyReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; - - if (tEncodeI32(&encoder, pReq->dnodeId) < 0) return -1; - if (tEncodeI64(&encoder, pReq->clusterId) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterId)); int32_t nVgroup = taosArrayGetSize(pReq->pVloads); - if (tEncodeI32(&encoder, nVgroup) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, nVgroup)); for (int32_t i = 0; i < nVgroup; ++i) { SVnodeLoadLite *vload = TARRAY_GET_ELEM(pReq->pVloads, i); - if (tEncodeI32(&encoder, vload->vgId) < 0) return -1; - if (tEncodeI64(&encoder, vload->nTimeSeries) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, vload->vgId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, vload->nTimeSeries)); } tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSNotifyReq(void *buf, int32_t bufLen, SNotifyReq *pReq) { - int32_t code = TSDB_CODE_INVALID_MSG; + int32_t code = 0; + int32_t lino; SDecoder decoder = {0}; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) goto _exit; - if (tDecodeI32(&decoder, &pReq->dnodeId) < 0) goto _exit; - if (tDecodeI64(&decoder, &pReq->clusterId) < 0) goto _exit; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterId)); int32_t nVgroup = 0; - if (tDecodeI32(&decoder, &nVgroup) < 0) goto _exit; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &nVgroup)); if (nVgroup > 0) { pReq->pVloads = taosArrayInit_s(sizeof(SVnodeLoadLite), nVgroup); if (!pReq->pVloads) { - code = terrno; - goto _exit; + TAOS_CHECK_EXIT(terrno); } for (int32_t i = 0; i < nVgroup; ++i) { SVnodeLoadLite *vload = TARRAY_GET_ELEM(pReq->pVloads, i); - if (tDecodeI32(&decoder, &(vload->vgId)) < 0) goto _exit; - if (tDecodeI64(&decoder, &(vload->nTimeSeries)) < 0) goto _exit; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &(vload->vgId))); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &(vload->nTimeSeries))); } } - code = 0; + tEndDecode(&decoder); _exit: - tEndDecode(&decoder); tDecoderClear(&decoder); return code; } @@ -1256,193 +1384,200 @@ void tFreeSNotifyReq(SNotifyReq *pReq) { int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { SEncoder encoder = {0}; + int32_t code = 0; + int32_t lino; + int32_t tlen; tEncoderInit(&encoder, buf, bufLen); - if (tStartEncode(&encoder) < 0) return -1; + TAOS_CHECK_EXIT(tStartEncode(&encoder)); // status - if (tEncodeI32(&encoder, pReq->sver) < 0) return -1; - if (tEncodeI64(&encoder, pReq->dnodeVer) < 0) return -1; - if (tEncodeI32(&encoder, pReq->dnodeId) < 0) return -1; - if (tEncodeI64(&encoder, pReq->clusterId) < 0) return -1; - if (tEncodeI64(&encoder, pReq->rebootTime) < 0) return -1; - if (tEncodeI64(&encoder, pReq->updateTime) < 0) return -1; - if (tEncodeFloat(&encoder, pReq->numOfCores) < 0) return -1; - if (tEncodeI32(&encoder, pReq->numOfSupportVnodes) < 0) return -1; - if (tEncodeI32v(&encoder, pReq->numOfDiskCfg) < 0) return -1; - if (tEncodeI64(&encoder, pReq->memTotal) < 0) return -1; - if (tEncodeI64(&encoder, pReq->memAvail) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->dnodeEp) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->machineId) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sver)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dnodeVer)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->rebootTime)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->updateTime)); + TAOS_CHECK_EXIT(tEncodeFloat(&encoder, pReq->numOfCores)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfSupportVnodes)); + TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->numOfDiskCfg)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->memTotal)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->memAvail)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dnodeEp)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->machineId)); // cluster cfg - if (tEncodeI32(&encoder, pReq->clusterCfg.statusInterval) < 0) return -1; - if (tEncodeI64(&encoder, pReq->clusterCfg.checkTime) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->clusterCfg.timezone) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->clusterCfg.locale) < 0) return -1; - if (tEncodeCStr(&encoder, pReq->clusterCfg.charset) < 0) return -1; - if (tEncodeI8(&encoder, pReq->clusterCfg.enableWhiteList) < 0) return -1; - if (tEncodeI8(&encoder, pReq->clusterCfg.encryptionKeyStat) < 0) return -1; - if (tEncodeU32(&encoder, pReq->clusterCfg.encryptionKeyChksum) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->clusterCfg.statusInterval)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterCfg.checkTime)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.timezone)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.locale)); + TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.charset)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.enableWhiteList)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.encryptionKeyStat)); + TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->clusterCfg.encryptionKeyChksum)); // vnode loads int32_t vlen = (int32_t)taosArrayGetSize(pReq->pVloads); - if (tEncodeI32(&encoder, vlen) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, vlen)); for (int32_t i = 0; i < vlen; ++i) { SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i); int64_t reserved = 0; - if (tEncodeI32(&encoder, pload->vgId) < 0) return -1; - if (tEncodeI8(&encoder, pload->syncState) < 0) return -1; - if (tEncodeI8(&encoder, pload->syncRestore) < 0) return -1; - if (tEncodeI8(&encoder, pload->syncCanRead) < 0) return -1; - if (tEncodeI64(&encoder, pload->cacheUsage) < 0) return -1; - if (tEncodeI64(&encoder, pload->numOfTables) < 0) return -1; - if (tEncodeI64(&encoder, pload->numOfTimeSeries) < 0) return -1; - if (tEncodeI64(&encoder, pload->totalStorage) < 0) return -1; - if (tEncodeI64(&encoder, pload->compStorage) < 0) return -1; - if (tEncodeI64(&encoder, pload->pointsWritten) < 0) return -1; - if (tEncodeI32(&encoder, pload->numOfCachedTables) < 0) return -1; - if (tEncodeI32(&encoder, pload->learnerProgress) < 0) return -1; - if (tEncodeI64(&encoder, pload->roleTimeMs) < 0) return -1; - if (tEncodeI64(&encoder, pload->startTimeMs) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->vgId)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncState)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncRestore)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncCanRead)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->cacheUsage)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->numOfTables)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->numOfTimeSeries)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->totalStorage)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->compStorage)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->pointsWritten)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->numOfCachedTables)); + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->learnerProgress)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->roleTimeMs)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->startTimeMs)); } // mnode loads - if (tEncodeI8(&encoder, pReq->mload.syncState) < 0) return -1; - if (tEncodeI8(&encoder, pReq->mload.syncRestore) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->mload.syncState)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->mload.syncRestore)); - if (tEncodeI32(&encoder, pReq->qload.dnodeId) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedQuery) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedCQuery) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedFetch) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedDrop) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedNotify) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedHb) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfProcessedDelete) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.cacheDataSize) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfQueryInQueue) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.numOfFetchInQueue) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.timeInQueryQueue) < 0) return -1; - if (tEncodeI64(&encoder, pReq->qload.timeInFetchQueue) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->qload.dnodeId)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedQuery)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedCQuery)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedFetch)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedDrop)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedNotify)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedHb)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedDelete)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.cacheDataSize)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfQueryInQueue)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfFetchInQueue)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.timeInQueryQueue)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.timeInFetchQueue)); - if (tEncodeI32(&encoder, pReq->statusSeq) < 0) return -1; - if (tEncodeI64(&encoder, pReq->mload.syncTerm) < 0) return -1; - if (tEncodeI64(&encoder, pReq->mload.roleTimeMs) < 0) return -1; - if (tEncodeI8(&encoder, pReq->clusterCfg.ttlChangeOnWrite) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->statusSeq)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->mload.syncTerm)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->mload.roleTimeMs)); + TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.ttlChangeOnWrite)); // vnode extra for (int32_t i = 0; i < vlen; ++i) { SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i); int64_t reserved = 0; - if (tEncodeI64(&encoder, pload->syncTerm) < 0) return -1; - if (tEncodeI64(&encoder, reserved) < 0) return -1; - if (tEncodeI64(&encoder, reserved) < 0) return -1; - if (tEncodeI64(&encoder, reserved) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncTerm)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved)); + TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved)); } - if (tEncodeI64(&encoder, pReq->ipWhiteVer) < 0) return -1; - - if (tSerializeSMonitorParas(&encoder, &pReq->clusterCfg.monitorParas) < 0) return -1; + TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->ipWhiteVer)); + TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pReq->clusterCfg.monitorParas)); tEndEncode(&encoder); - int32_t tlen = encoder.pos; +_exit: + if (code) { + tlen = code; + } else { + tlen = encoder.pos; + } tEncoderClear(&encoder); return tlen; } int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { SDecoder decoder = {0}; + int32_t code = 0; + int32_t lino; tDecoderInit(&decoder, buf, bufLen); - if (tStartDecode(&decoder) < 0) return -1; + TAOS_CHECK_EXIT(tStartDecode(&decoder)); // status - if (tDecodeI32(&decoder, &pReq->sver) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->dnodeVer) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->dnodeId) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->clusterId) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->rebootTime) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->updateTime) < 0) return -1; - if (tDecodeFloat(&decoder, &pReq->numOfCores) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->numOfSupportVnodes) < 0) return -1; - if (tDecodeI32v(&decoder, &pReq->numOfDiskCfg) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->memTotal) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->memAvail) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->dnodeEp) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->machineId) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sver)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dnodeVer)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->rebootTime)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->updateTime)); + TAOS_CHECK_EXIT(tDecodeFloat(&decoder, &pReq->numOfCores)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfSupportVnodes)); + TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->numOfDiskCfg)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->memTotal)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->memAvail)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dnodeEp)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->machineId)); // cluster cfg - if (tDecodeI32(&decoder, &pReq->clusterCfg.statusInterval) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->clusterCfg.checkTime) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->clusterCfg.timezone) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->clusterCfg.locale) < 0) return -1; - if (tDecodeCStrTo(&decoder, pReq->clusterCfg.charset) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->clusterCfg.enableWhiteList) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->clusterCfg.encryptionKeyStat) < 0) return -1; - if (tDecodeU32(&decoder, &pReq->clusterCfg.encryptionKeyChksum) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->clusterCfg.statusInterval)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterCfg.checkTime)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.timezone)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.locale)); + TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.charset)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.enableWhiteList)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.encryptionKeyStat)); + TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->clusterCfg.encryptionKeyChksum)); // vnode loads int32_t vlen = 0; - if (tDecodeI32(&decoder, &vlen) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vlen)); pReq->pVloads = taosArrayInit(vlen, sizeof(SVnodeLoad)); if (pReq->pVloads == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } for (int32_t i = 0; i < vlen; ++i) { SVnodeLoad vload = {0}; vload.syncTerm = -1; - if (tDecodeI32(&decoder, &vload.vgId) < 0) return -1; - if (tDecodeI8(&decoder, &vload.syncState) < 0) return -1; - if (tDecodeI8(&decoder, &vload.syncRestore) < 0) return -1; - if (tDecodeI8(&decoder, &vload.syncCanRead) < 0) return -1; - if (tDecodeI64(&decoder, &vload.cacheUsage) < 0) return -1; - if (tDecodeI64(&decoder, &vload.numOfTables) < 0) return -1; - if (tDecodeI64(&decoder, &vload.numOfTimeSeries) < 0) return -1; - if (tDecodeI64(&decoder, &vload.totalStorage) < 0) return -1; - if (tDecodeI64(&decoder, &vload.compStorage) < 0) return -1; - if (tDecodeI64(&decoder, &vload.pointsWritten) < 0) return -1; - if (tDecodeI32(&decoder, &vload.numOfCachedTables) < 0) return -1; - if (tDecodeI32(&decoder, &vload.learnerProgress) < 0) return -1; - if (tDecodeI64(&decoder, &vload.roleTimeMs) < 0) return -1; - if (tDecodeI64(&decoder, &vload.startTimeMs) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.vgId)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncState)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncRestore)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncCanRead)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.cacheUsage)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.numOfTables)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.numOfTimeSeries)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.totalStorage)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.compStorage)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.pointsWritten)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.numOfCachedTables)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.learnerProgress)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.roleTimeMs)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.startTimeMs)); if (taosArrayPush(pReq->pVloads, &vload) == NULL) { - return -1; + TAOS_CHECK_EXIT(terrno); } } // mnode loads - if (tDecodeI8(&decoder, &pReq->mload.syncState) < 0) return -1; - if (tDecodeI8(&decoder, &pReq->mload.syncRestore) < 0) return -1; - - if (tDecodeI32(&decoder, &pReq->qload.dnodeId) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedQuery) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedCQuery) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedFetch) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedDrop) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedNotify) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedHb) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfProcessedDelete) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.cacheDataSize) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfQueryInQueue) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.numOfFetchInQueue) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.timeInQueryQueue) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->qload.timeInFetchQueue) < 0) return -1; - - if (tDecodeI32(&decoder, &pReq->statusSeq) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->mload.syncState)); + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->mload.syncRestore)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->qload.dnodeId)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedQuery)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedCQuery)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedFetch)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedDrop)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedNotify)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedHb)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedDelete)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.cacheDataSize)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfQueryInQueue)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfFetchInQueue)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.timeInQueryQueue)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.timeInFetchQueue)); + TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->statusSeq)); pReq->mload.syncTerm = -1; pReq->mload.roleTimeMs = 0; if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI64(&decoder, &pReq->mload.syncTerm) < 0) return -1; - if (tDecodeI64(&decoder, &pReq->mload.roleTimeMs) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->mload.syncTerm)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->mload.roleTimeMs)); } pReq->clusterCfg.ttlChangeOnWrite = false; if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI8(&decoder, &pReq->clusterCfg.ttlChangeOnWrite) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.ttlChangeOnWrite)); } // vnode extra @@ -1450,23 +1585,25 @@ int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) { for (int32_t i = 0; i < vlen; ++i) { SVnodeLoad *pLoad = taosArrayGet(pReq->pVloads, i); int64_t reserved = 0; - if (tDecodeI64(&decoder, &pLoad->syncTerm) < 0) return -1; - if (tDecodeI64(&decoder, &reserved) < 0) return -1; - if (tDecodeI64(&decoder, &reserved) < 0) return -1; - if (tDecodeI64(&decoder, &reserved) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncTerm)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved)); + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved)); } } if (!tDecodeIsEnd(&decoder)) { - if (tDecodeI64(&decoder, &pReq->ipWhiteVer) < 0) return -1; + TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->ipWhiteVer)); } if (!tDecodeIsEnd(&decoder)) { - if (tDeserializeSMonitorParas(&decoder, &pReq->clusterCfg.monitorParas) < 0) return -1; + TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pReq->clusterCfg.monitorParas)); } tEndDecode(&decoder); + +_exit: tDecoderClear(&decoder); - return 0; + return code; } void tFreeSStatusReq(SStatusReq *pReq) { taosArrayDestroy(pReq->pVloads); }