fix: fix client/server memory leak issues
This commit is contained in:
parent
2c83fee450
commit
4fd0bc409d
|
@ -854,6 +854,7 @@ void schedulerExecCb(SExecResult* pResult, void* param, int32_t code) {
|
||||||
pRequest->metric.resultReady = taosGetTimestampUs();
|
pRequest->metric.resultReady = taosGetTimestampUs();
|
||||||
|
|
||||||
if (pResult) {
|
if (pResult) {
|
||||||
|
destroyQueryExecRes(&pRequest->body.resInfo.execRes);
|
||||||
memcpy(&pRequest->body.resInfo.execRes, pResult, sizeof(*pResult));
|
memcpy(&pRequest->body.resInfo.execRes, pResult, sizeof(*pResult));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -870,11 +870,13 @@ static void fetchCallback(void *pResult, void *param, int32_t code) {
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
pRequest->code = code;
|
pRequest->code = code;
|
||||||
|
taosMemoryFreeClear(pResultInfo->pData);
|
||||||
pRequest->body.fetchFp(pRequest->body.param, pRequest, 0);
|
pRequest->body.fetchFp(pRequest->body.param, pRequest, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
||||||
|
taosMemoryFreeClear(pResultInfo->pData);
|
||||||
pRequest->body.fetchFp(pRequest->body.param, pRequest, 0);
|
pRequest->body.fetchFp(pRequest->body.param, pRequest, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -701,6 +701,12 @@ typedef struct SVgroupCreateTableBatch {
|
||||||
|
|
||||||
static void destroyCreateTbReqBatch(void* data) {
|
static void destroyCreateTbReqBatch(void* data) {
|
||||||
SVgroupCreateTableBatch* pTbBatch = (SVgroupCreateTableBatch*)data;
|
SVgroupCreateTableBatch* pTbBatch = (SVgroupCreateTableBatch*)data;
|
||||||
|
size_t size = taosArrayGetSize(pTbBatch->req.pArray);
|
||||||
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
|
SVCreateTbReq* pTableReq = taosArrayGet(pTbBatch->req.pArray, i);
|
||||||
|
tdDestroySVCreateTbReq(pTableReq);
|
||||||
|
}
|
||||||
|
|
||||||
taosArrayDestroy(pTbBatch->req.pArray);
|
taosArrayDestroy(pTbBatch->req.pArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5436,6 +5436,8 @@ void tFreeSSubmitRsp(SSubmitRsp *pRsp) {
|
||||||
for (int32_t i = 0; i < pRsp->nBlocks; ++i) {
|
for (int32_t i = 0; i < pRsp->nBlocks; ++i) {
|
||||||
SSubmitBlkRsp *sRsp = pRsp->pBlocks + i;
|
SSubmitBlkRsp *sRsp = pRsp->pBlocks + i;
|
||||||
taosMemoryFree(sRsp->tblFName);
|
taosMemoryFree(sRsp->tblFName);
|
||||||
|
tFreeSTableMetaRsp(sRsp->pMeta);
|
||||||
|
taosMemoryFree(sRsp->pMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(pRsp->pBlocks);
|
taosMemoryFree(pRsp->pBlocks);
|
||||||
|
|
|
@ -99,7 +99,16 @@ char *ctgTaskTypeStr(CTG_TASK_TYPE type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ctgFreeQNode(SCtgQNode *node) {
|
void ctgFreeQNode(SCtgQNode *node) {
|
||||||
//TODO
|
if (NULL == node) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node->op) {
|
||||||
|
taosMemoryFree(node->op->data);
|
||||||
|
taosMemoryFree(node->op);
|
||||||
|
}
|
||||||
|
|
||||||
|
taosMemoryFree(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ctgFreeSTableIndex(void *info) {
|
void ctgFreeSTableIndex(void *info) {
|
||||||
|
|
|
@ -5922,12 +5922,6 @@ typedef struct SVgroupCreateTableBatch {
|
||||||
char dbName[TSDB_DB_NAME_LEN];
|
char dbName[TSDB_DB_NAME_LEN];
|
||||||
} SVgroupCreateTableBatch;
|
} SVgroupCreateTableBatch;
|
||||||
|
|
||||||
static void destroyCreateTbReq(SVCreateTbReq* pReq) {
|
|
||||||
taosMemoryFreeClear(pReq->name);
|
|
||||||
taosMemoryFreeClear(pReq->comment);
|
|
||||||
taosMemoryFreeClear(pReq->ntb.schemaRow.pSchema);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt* pStmt, const SVgroupInfo* pVgroupInfo,
|
static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt* pStmt, const SVgroupInfo* pVgroupInfo,
|
||||||
SVgroupCreateTableBatch* pBatch) {
|
SVgroupCreateTableBatch* pBatch) {
|
||||||
char dbFName[TSDB_DB_FNAME_LEN] = {0};
|
char dbFName[TSDB_DB_FNAME_LEN] = {0};
|
||||||
|
@ -5942,7 +5936,7 @@ static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt*
|
||||||
if (pStmt->pOptions->commentNull == false) {
|
if (pStmt->pOptions->commentNull == false) {
|
||||||
req.comment = strdup(pStmt->pOptions->comment);
|
req.comment = strdup(pStmt->pOptions->comment);
|
||||||
if (NULL == req.comment) {
|
if (NULL == req.comment) {
|
||||||
destroyCreateTbReq(&req);
|
tdDestroySVCreateTbReq(&req);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
req.commentLen = strlen(pStmt->pOptions->comment);
|
req.commentLen = strlen(pStmt->pOptions->comment);
|
||||||
|
@ -5953,7 +5947,7 @@ static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt*
|
||||||
req.ntb.schemaRow.version = 1;
|
req.ntb.schemaRow.version = 1;
|
||||||
req.ntb.schemaRow.pSchema = taosMemoryCalloc(req.ntb.schemaRow.nCols, sizeof(SSchema));
|
req.ntb.schemaRow.pSchema = taosMemoryCalloc(req.ntb.schemaRow.nCols, sizeof(SSchema));
|
||||||
if (NULL == req.name || NULL == req.ntb.schemaRow.pSchema) {
|
if (NULL == req.name || NULL == req.ntb.schemaRow.pSchema) {
|
||||||
destroyCreateTbReq(&req);
|
tdDestroySVCreateTbReq(&req);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
if (pStmt->ignoreExists) {
|
if (pStmt->ignoreExists) {
|
||||||
|
@ -5969,7 +5963,7 @@ static int32_t buildNormalTableBatchReq(int32_t acctId, const SCreateTableStmt*
|
||||||
strcpy(pBatch->dbName, pStmt->dbName);
|
strcpy(pBatch->dbName, pStmt->dbName);
|
||||||
pBatch->req.pArray = taosArrayInit(1, sizeof(struct SVCreateTbReq));
|
pBatch->req.pArray = taosArrayInit(1, sizeof(struct SVCreateTbReq));
|
||||||
if (NULL == pBatch->req.pArray) {
|
if (NULL == pBatch->req.pArray) {
|
||||||
destroyCreateTbReq(&req);
|
tdDestroySVCreateTbReq(&req);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
taosArrayPush(pBatch->req.pArray, &req);
|
taosArrayPush(pBatch->req.pArray, &req);
|
||||||
|
@ -6014,16 +6008,7 @@ static void destroyCreateTbReqBatch(void* data) {
|
||||||
size_t size = taosArrayGetSize(pTbBatch->req.pArray);
|
size_t size = taosArrayGetSize(pTbBatch->req.pArray);
|
||||||
for (int32_t i = 0; i < size; ++i) {
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
SVCreateTbReq* pTableReq = taosArrayGet(pTbBatch->req.pArray, i);
|
SVCreateTbReq* pTableReq = taosArrayGet(pTbBatch->req.pArray, i);
|
||||||
taosMemoryFreeClear(pTableReq->name);
|
tdDestroySVCreateTbReq(pTableReq);
|
||||||
taosMemoryFreeClear(pTableReq->comment);
|
|
||||||
|
|
||||||
if (pTableReq->type == TSDB_NORMAL_TABLE) {
|
|
||||||
taosMemoryFreeClear(pTableReq->ntb.schemaRow.pSchema);
|
|
||||||
} else if (pTableReq->type == TSDB_CHILD_TABLE) {
|
|
||||||
taosMemoryFreeClear(pTableReq->ctb.pTag);
|
|
||||||
taosMemoryFreeClear(pTableReq->ctb.name);
|
|
||||||
taosArrayDestroy(pTableReq->ctb.tagName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayDestroy(pTbBatch->req.pArray);
|
taosArrayDestroy(pTbBatch->req.pArray);
|
||||||
|
@ -6384,6 +6369,8 @@ static int32_t rewriteCreateSubTable(STranslateContext* pCxt, SCreateSubTableCla
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
addCreateTbReqIntoVgroup(pCxt->pParseCxt->acctId, pVgroupHashmap, pStmt, pTag, pSuperTableMeta->uid,
|
addCreateTbReqIntoVgroup(pCxt->pParseCxt->acctId, pVgroupHashmap, pStmt, pTag, pSuperTableMeta->uid,
|
||||||
pStmt->useTableName, &info, tagName, pSuperTableMeta->tableInfo.numOfTags);
|
pStmt->useTableName, &info, tagName, pSuperTableMeta->tableInfo.numOfTags);
|
||||||
|
} else {
|
||||||
|
taosMemoryFree(pTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayDestroy(tagName);
|
taosArrayDestroy(tagName);
|
||||||
|
|
Loading…
Reference in New Issue