diff --git a/include/common/tmsg.h b/include/common/tmsg.h index eaf34c0a3db78c1111597a7b51f89722bba0c4c2..c7f3caafb54bf1687d9cc795478fa513374c4968 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -3264,7 +3264,8 @@ void tDestroySSubmitRsp2(SSubmitRsp2* pRsp, int32_t flag); #define TSDB_MSG_FLG_ENCODE 0x1 #define TSDB_MSG_FLG_DECODE 0x2 -int32_t tBuildSubmitReq(int32_t vgId, SSubmitReq2* pReq, void** pData, uint32_t* pLen, __tmalloc_fn_t fp); +int32_t tBuildSubmitReq(int32_t vgId, SSubmitReq2* pReq, void** pData, uint32_t* pLen, __tmalloc_fn_t fp, + __tfree_fn_t ff); #pragma pack(pop) diff --git a/include/os/osMemory.h b/include/os/osMemory.h index 4f06c4f2ced907857f2a11ae9b8f96d7ed97c482..a13b8f3014705a58e51d4a0fd12a63eda3fc7b45 100644 --- a/include/os/osMemory.h +++ b/include/os/osMemory.h @@ -48,6 +48,7 @@ void *taosMemoryMallocAlign(uint32_t alignment, int64_t size); } while (0) typedef void *(*__tmalloc_fn_t)(int64_t); +typedef void (*__tfree_fn_t)(void *); #ifdef __cplusplus } diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 2548422ed86806e8eafedfb70b8c459560b12a11..47738e34361dfc5be744f5d9e538dba274d9faf5 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -7001,7 +7001,7 @@ void tDestroySSubmitRsp2(SSubmitRsp2 *pRsp, int32_t flag) { } } -int32_t tBuildSubmitReq(int32_t vgId, SSubmitReq2 *pReq, void **pData, uint32_t *pLen, __tmalloc_fn_t fp) { +int32_t tBuildSubmitReq(int32_t vgId, SSubmitReq2 *pReq, void **pData, uint32_t *pLen, __tmalloc_fn_t fp, __tfree_fn_t ff) { int32_t code = TSDB_CODE_SUCCESS; uint32_t len = 0; void *pBuf = NULL; @@ -7024,7 +7024,7 @@ int32_t tBuildSubmitReq(int32_t vgId, SSubmitReq2 *pReq, void **pData, uint32_t *pData = pBuf; *pLen = len; } else { - taosMemoryFree(pBuf); + (*ff)(pBuf); } return code; } \ No newline at end of file diff --git a/source/dnode/vnode/src/tq/tqSink.c b/source/dnode/vnode/src/tq/tqSink.c index d2a26dc3a8f33923f81826dc23a4574f4f39142d..49c4973342dfaa36cf6417621fc167088ba90c1a 100644 --- a/source/dnode/vnode/src/tq/tqSink.c +++ b/source/dnode/vnode/src/tq/tqSink.c @@ -463,7 +463,7 @@ int32_t tqBlockToSubmit(SVnode* pVnode, const SArray* pBlocks, const STSchema* p taosArrayPush(pReq->aSubmitTbData, pTbData); } - terrno = tBuildSubmitReq(TD_VID(pVnode), pReq, ppData, pLen, rpcMallocCont); + terrno = tBuildSubmitReq(TD_VID(pVnode), pReq, ppData, pLen, rpcMallocCont, rpcFreeCont); _end: taosArrayDestroy(tagArray);