From 5cee5bc44754eb6a0a01a7d881b38f0f7ee20903 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 29 Nov 2022 17:45:50 +0800 Subject: [PATCH] more code --- include/common/tmsg.h | 3 +- source/common/src/tmsg.c | 74 +++++++++++---------------- source/dnode/vnode/src/vnd/vnodeSvr.c | 10 +++- 3 files changed, 40 insertions(+), 47 deletions(-) diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 8ba2fee3fe..8835ee669c 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -3232,10 +3232,9 @@ typedef struct { SArray* aCreateTbRsp; // SArray } SSubmitRsp2; -int32_t tCreateSSubmitRsp2(SSubmitRsp2** ppRsp); -void tDestroySSubmitRsp2(SSubmitRsp2* pRsp, int32_t flag); int32_t tEncodeSSubmitRsp2(SEncoder* pCoder, const SSubmitRsp2* pRsp); int32_t tDecodeSSubmitRsp2(SDecoder* pCoder, SSubmitRsp2* pRsp); +void tDestroySSubmitRsp2(SSubmitRsp2* pRsp, int32_t flag); #define TSDB_MSG_FLG_ENCODE 0x1 #define TSDB_MSG_FLG_DECODE 0x2 diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 7a29e0434e..9c026dab83 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -6835,7 +6835,8 @@ int32_t tEncodeSSubmitRsp2(SEncoder *pCoder, const SSubmitRsp2 *pRsp) { if (tEncodeI32v(pCoder, pRsp->code) < 0) return -1; if (tEncodeI32v(pCoder, pRsp->affectedRows) < 0) return -1; - if (tEncodeI32v(pCoder, taosArrayGetSize(pRsp->aCreateTbRsp)) < 0) return -1; + + if (tEncodeU64v(pCoder, taosArrayGetSize(pRsp->aCreateTbRsp)) < 0) return -1; for (int32_t i = 0; i < taosArrayGetSize(pRsp->aCreateTbRsp); ++i) { if (tEncodeSVCreateTbRsp(pCoder, taosArrayGet(pRsp->aCreateTbRsp, i)) < 0) return -1; } @@ -6865,24 +6866,26 @@ int32_t tDecodeSSubmitRsp2(SDecoder *pCoder, SSubmitRsp2 *pRsp) { goto _exit; } - int32_t nCreateTbRsp; - if (tDecodeI32v(pCoder, &nCreateTbRsp) < 0) { + uint64_t nCreateTbRsp; + if (tDecodeU64v(pCoder, &nCreateTbRsp) < 0) { code = TSDB_CODE_INVALID_MSG; goto _exit; } - pRsp->aCreateTbRsp = taosArrayInit(nCreateTbRsp, sizeof(SVCreateTbRsp)); - if (pRsp->aCreateTbRsp == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; - goto _exit; - } - - for (int32_t i = 0; i < nCreateTbRsp; ++i) { - SVCreateTbRsp *pCreateTbRsp = taosArrayReserve(pRsp->aCreateTbRsp, 1); - if (tDecodeSVCreateTbRsp(pCoder, pCreateTbRsp) < 0) { - code = TSDB_CODE_INVALID_MSG; + if (nCreateTbRsp) { + pRsp->aCreateTbRsp = taosArrayInit(nCreateTbRsp, sizeof(SVCreateTbRsp)); + if (pRsp->aCreateTbRsp == NULL) { + code = TSDB_CODE_OUT_OF_MEMORY; goto _exit; } + + for (int32_t i = 0; i < nCreateTbRsp; ++i) { + SVCreateTbRsp *pCreateTbRsp = taosArrayReserve(pRsp->aCreateTbRsp, 1); + if (tDecodeSVCreateTbRsp(pCoder, pCreateTbRsp) < 0) { + code = TSDB_CODE_INVALID_MSG; + goto _exit; + } + } } tEndDecode(pCoder); @@ -6896,37 +6899,20 @@ _exit: return code; } -int32_t tCreateSSubmitRsp2(SSubmitRsp2 **ppRsp) { - int32_t code = 0; - - SSubmitRsp2 *pRsp = (SSubmitRsp2 *)taosMemoryCalloc(1, sizeof(*pRsp)); - if (pRsp == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; - goto _exit; - } - - pRsp->aCreateTbRsp = taosArrayInit(16, sizeof(SVCreateTbRsp)); - if (pRsp->aCreateTbRsp == NULL) { - code = TSDB_CODE_OUT_OF_MEMORY; - goto _exit; - } - -_exit: - if (code) { - *ppRsp = NULL; - if (pRsp) { - if (pRsp->aCreateTbRsp) taosArrayDestroy(pRsp->aCreateTbRsp); - taosMemoryFree(pRsp); - } - } else { - *ppRsp = pRsp; - } - return code; -} - void tDestroySSubmitRsp2(SSubmitRsp2 *pRsp, int32_t flag) { - if (pRsp) { - taosArrayDestroyEx(pRsp->aCreateTbRsp, NULL /* TODO: set according to flag */); - taosMemoryFree(pRsp); + if (TSDB_MSG_FLG_ENCODE) { + if (pRsp->aCreateTbRsp) { + int32_t nCreateTbRsp = TARRAY_SIZE(pRsp->aCreateTbRsp); + SVCreateTbRsp *aCreateTbRsp = TARRAY_DATA(pRsp->aCreateTbRsp); + for (int32_t i = 0; i < nCreateTbRsp; ++i) { + if (aCreateTbRsp[i].pMeta) { + taosMemoryFree(aCreateTbRsp[i].pMeta); + } + } + taosArrayDestroy(pRsp->aCreateTbRsp); + } + } else if (TSDB_MSG_FLG_DECODE) { + // TODO + taosArrayDestroy(pRsp->aCreateTbRsp); } } diff --git a/source/dnode/vnode/src/vnd/vnodeSvr.c b/source/dnode/vnode/src/vnd/vnodeSvr.c index 2f77da1489..810b374e82 100644 --- a/source/dnode/vnode/src/vnd/vnodeSvr.c +++ b/source/dnode/vnode/src/vnd/vnodeSvr.c @@ -968,10 +968,18 @@ _exit: tEncodeSSubmitRsp2(&ec, pSubmitRsp); tEncoderClear(&ec); + // update statistics + atomic_add_fetch_64(&pVnode->statis.nInsert, pSubmitRsp->affectedRows); + atomic_add_fetch_64(&pVnode->statis.nInsertSuccess, pSubmitRsp->affectedRows); + atomic_add_fetch_64(&pVnode->statis.nBatchInsert, 1); + if (code == 0) { + atomic_add_fetch_64(&pVnode->statis.nBatchInsertSuccess, 1); + } + // clear taosArrayDestroy(newTbUids); tDestroySSubmitReq2(pSubmitReq); - tDestroySSubmitRsp2(pSubmitRsp); + tDestroySSubmitRsp2(pSubmitRsp, TSDB_MSG_FLG_ENCODE); return code;