Merge pull request #15619 from taosdata/fix/TD-18009
fix: fix client memory leak
This commit is contained in:
commit
11d9ece114
|
@ -316,6 +316,7 @@ void doDestroyRequest(void *p) {
|
||||||
|
|
||||||
taosArrayDestroy(pRequest->tableList);
|
taosArrayDestroy(pRequest->tableList);
|
||||||
taosArrayDestroy(pRequest->dbList);
|
taosArrayDestroy(pRequest->dbList);
|
||||||
|
taosArrayDestroy(pRequest->targetTableList);
|
||||||
|
|
||||||
destroyQueryExecRes(&pRequest->body.resInfo.execRes);
|
destroyQueryExecRes(&pRequest->body.resInfo.execRes);
|
||||||
|
|
||||||
|
|
|
@ -30,12 +30,20 @@ void ctgFreeMsgSendParam(void* param) {
|
||||||
taosMemoryFree(param);
|
taosMemoryFree(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ctgFreeBatchMsg(void* msg) {
|
||||||
|
if (NULL == msg) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SBatchMsg* pMsg = (SBatchMsg*)msg;
|
||||||
|
taosMemoryFree(pMsg->msg);
|
||||||
|
}
|
||||||
|
|
||||||
void ctgFreeBatch(SCtgBatch *pBatch) {
|
void ctgFreeBatch(SCtgBatch *pBatch) {
|
||||||
if (NULL == pBatch) {
|
if (NULL == pBatch) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayDestroy(pBatch->pMsgs);
|
taosArrayDestroyEx(pBatch->pMsgs, ctgFreeBatchMsg);
|
||||||
taosArrayDestroy(pBatch->pTaskIds);
|
taosArrayDestroy(pBatch->pTaskIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -745,6 +745,7 @@ void nodesDestroyNode(SNode* pNode) {
|
||||||
}
|
}
|
||||||
taosArrayDestroy(pQuery->pDbList);
|
taosArrayDestroy(pQuery->pDbList);
|
||||||
taosArrayDestroy(pQuery->pTableList);
|
taosArrayDestroy(pQuery->pTableList);
|
||||||
|
taosArrayDestroy(pQuery->pTargetTableList);
|
||||||
taosArrayDestroy(pQuery->pPlaceholderValues);
|
taosArrayDestroy(pQuery->pPlaceholderValues);
|
||||||
nodesDestroyNode(pQuery->pPrepareRoot);
|
nodesDestroyNode(pQuery->pPrepareRoot);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -398,6 +398,7 @@ static void destroyTranslateContext(STranslateContext* pCxt) {
|
||||||
|
|
||||||
taosHashCleanup(pCxt->pDbs);
|
taosHashCleanup(pCxt->pDbs);
|
||||||
taosHashCleanup(pCxt->pTables);
|
taosHashCleanup(pCxt->pTables);
|
||||||
|
taosHashCleanup(pCxt->pTargetTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isSelectStmt(SNode* pCurrStmt) {
|
static bool isSelectStmt(SNode* pCurrStmt) {
|
||||||
|
|
|
@ -92,7 +92,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
switch (msgType) {
|
switch (msgType) {
|
||||||
case TDMT_VND_COMMIT_RSP: {
|
case TDMT_VND_COMMIT_RSP: {
|
||||||
SCH_ERR_JRET(rspCode);
|
SCH_ERR_JRET(rspCode);
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TDMT_VND_CREATE_TABLE_RSP: {
|
case TDMT_VND_CREATE_TABLE_RSP: {
|
||||||
|
@ -118,7 +118,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
SCH_ERR_JRET(rspCode);
|
SCH_ERR_JRET(rspCode);
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TDMT_VND_DROP_TABLE_RSP: {
|
case TDMT_VND_DROP_TABLE_RSP: {
|
||||||
|
@ -144,7 +144,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
SCH_ERR_JRET(rspCode);
|
SCH_ERR_JRET(rspCode);
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TDMT_VND_ALTER_TABLE_RSP: {
|
case TDMT_VND_ALTER_TABLE_RSP: {
|
||||||
|
@ -169,7 +169,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
|
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TDMT_VND_SUBMIT_RSP: {
|
case TDMT_VND_SUBMIT_RSP: {
|
||||||
|
@ -218,7 +218,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
|
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
|
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -263,7 +263,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
|
||||||
|
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnTaskSuccess(pJob, pTask));
|
SCH_ERR_JRET(schProcessOnTaskSuccess(pJob, pTask));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -379,13 +379,15 @@ int32_t schHandleCallback(void *param, SDataBuf *pMsg, int32_t rspCode) {
|
||||||
qDebug("begin to handle rsp msg, type:%s, handle:%p, code:%s", TMSG_INFO(pMsg->msgType), pMsg->handle,
|
qDebug("begin to handle rsp msg, type:%s, handle:%p, code:%s", TMSG_INFO(pMsg->msgType), pMsg->handle,
|
||||||
tstrerror(rspCode));
|
tstrerror(rspCode));
|
||||||
|
|
||||||
SCH_ERR_RET(schProcessOnCbBegin(&pJob, &pTask, pParam->queryId, pParam->refId, pParam->taskId));
|
SCH_ERR_JRET(schProcessOnCbBegin(&pJob, &pTask, pParam->queryId, pParam->refId, pParam->taskId));
|
||||||
|
|
||||||
code = schHandleResponseMsg(pJob, pTask, pParam->execId, pMsg, rspCode);
|
code = schHandleResponseMsg(pJob, pTask, pParam->execId, pMsg, rspCode);
|
||||||
pMsg->pData = NULL;
|
pMsg->pData = NULL;
|
||||||
|
|
||||||
schProcessOnCbEnd(pJob, pTask, code);
|
schProcessOnCbEnd(pJob, pTask, code);
|
||||||
|
|
||||||
|
_return:
|
||||||
|
|
||||||
taosMemoryFreeClear(pMsg->pData);
|
taosMemoryFreeClear(pMsg->pData);
|
||||||
|
|
||||||
qDebug("end to handle rsp msg, type:%s, handle:%p, code:%s", TMSG_INFO(pMsg->msgType), pMsg->handle,
|
qDebug("end to handle rsp msg, type:%s, handle:%p, code:%s", TMSG_INFO(pMsg->msgType), pMsg->handle,
|
||||||
|
@ -398,6 +400,9 @@ int32_t schHandleDropCallback(void *param, SDataBuf *pMsg, int32_t code) {
|
||||||
SSchTaskCallbackParam *pParam = (SSchTaskCallbackParam *)param;
|
SSchTaskCallbackParam *pParam = (SSchTaskCallbackParam *)param;
|
||||||
qDebug("QID:0x%" PRIx64 ",TID:0x%" PRIx64 " drop task rsp received, code:0x%x", pParam->queryId, pParam->taskId,
|
qDebug("QID:0x%" PRIx64 ",TID:0x%" PRIx64 " drop task rsp received, code:0x%x", pParam->queryId, pParam->taskId,
|
||||||
code);
|
code);
|
||||||
|
if (pMsg) {
|
||||||
|
taosMemoryFree(pMsg->pData);
|
||||||
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,6 +413,8 @@ int32_t schHandleLinkBrokenCallback(void *param, SDataBuf *pMsg, int32_t code) {
|
||||||
qDebug("handle %p is broken", pMsg->handle);
|
qDebug("handle %p is broken", pMsg->handle);
|
||||||
|
|
||||||
if (head->isHbParam) {
|
if (head->isHbParam) {
|
||||||
|
taosMemoryFree(pMsg->pData);
|
||||||
|
|
||||||
SSchHbCallbackParam *hbParam = (SSchHbCallbackParam *)param;
|
SSchHbCallbackParam *hbParam = (SSchHbCallbackParam *)param;
|
||||||
SSchTrans trans = {.pTrans = hbParam->pTrans, .pHandle = NULL};
|
SSchTrans trans = {.pTrans = hbParam->pTrans, .pHandle = NULL};
|
||||||
SCH_ERR_RET(schUpdateHbConnection(&hbParam->nodeEpId, &trans));
|
SCH_ERR_RET(schUpdateHbConnection(&hbParam->nodeEpId, &trans));
|
||||||
|
|
|
@ -424,10 +424,15 @@ int32_t schHandleRedirect(SSchJob *pJob, SSchTask *pTask, SDataBuf *pData, int32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SCH_RET(schDoTaskRedirect(pJob, pTask, pData, rspCode));
|
code = schDoTaskRedirect(pJob, pTask, pData, rspCode);
|
||||||
|
taosMemoryFree(pData->pData);
|
||||||
|
|
||||||
|
SCH_RET(code);
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
|
taosMemoryFree(pData->pData);
|
||||||
|
|
||||||
SCH_RET(schProcessOnTaskFailure(pJob, pTask, code));
|
SCH_RET(schProcessOnTaskFailure(pJob, pTask, code));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue