Merge pull request #5634 from taosdata/hotfix/TD-3569
[TD-3569]fix taosd mem leak issue
This commit is contained in:
commit
251f20164f
|
@ -86,7 +86,8 @@ typedef struct SResultRow {
|
||||||
bool closed; // this result status: closed or opened
|
bool closed; // this result status: closed or opened
|
||||||
uint32_t numOfRows; // number of rows of current time window
|
uint32_t numOfRows; // number of rows of current time window
|
||||||
SResultRowCellInfo* pCellInfo; // For each result column, there is a resultInfo
|
SResultRowCellInfo* pCellInfo; // For each result column, there is a resultInfo
|
||||||
union {STimeWindow win; char* key;}; // start key of current result row
|
STimeWindow win;
|
||||||
|
char* key; // start key of current result row
|
||||||
} SResultRow;
|
} SResultRow;
|
||||||
|
|
||||||
typedef struct SGroupResInfo {
|
typedef struct SGroupResInfo {
|
||||||
|
|
|
@ -1876,14 +1876,15 @@ static void teardownQueryRuntimeEnv(SQueryRuntimeEnv *pRuntimeEnv) {
|
||||||
taosHashCleanup(pRuntimeEnv->pResultRowHashTable);
|
taosHashCleanup(pRuntimeEnv->pResultRowHashTable);
|
||||||
pRuntimeEnv->pResultRowHashTable = NULL;
|
pRuntimeEnv->pResultRowHashTable = NULL;
|
||||||
|
|
||||||
pRuntimeEnv->pool = destroyResultRowPool(pRuntimeEnv->pool);
|
|
||||||
taosArrayDestroyEx(pRuntimeEnv->prevResult, freeInterResult);
|
|
||||||
pRuntimeEnv->prevResult = NULL;
|
|
||||||
|
|
||||||
taosHashCleanup(pRuntimeEnv->pTableRetrieveTsMap);
|
taosHashCleanup(pRuntimeEnv->pTableRetrieveTsMap);
|
||||||
pRuntimeEnv->pTableRetrieveTsMap = NULL;
|
pRuntimeEnv->pTableRetrieveTsMap = NULL;
|
||||||
|
|
||||||
destroyOperatorInfo(pRuntimeEnv->proot);
|
destroyOperatorInfo(pRuntimeEnv->proot);
|
||||||
|
|
||||||
|
pRuntimeEnv->pool = destroyResultRowPool(pRuntimeEnv->pool);
|
||||||
|
taosArrayDestroyEx(pRuntimeEnv->prevResult, freeInterResult);
|
||||||
|
pRuntimeEnv->prevResult = NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool needBuildResAfterQueryComplete(SQInfo* pQInfo) {
|
static bool needBuildResAfterQueryComplete(SQInfo* pQInfo) {
|
||||||
|
@ -6463,6 +6464,9 @@ void freeQInfo(SQInfo *pQInfo) {
|
||||||
|
|
||||||
SQueryRuntimeEnv* pRuntimeEnv = &pQInfo->runtimeEnv;
|
SQueryRuntimeEnv* pRuntimeEnv = &pQInfo->runtimeEnv;
|
||||||
releaseQueryBuf(pRuntimeEnv->tableqinfoGroupInfo.numOfTables);
|
releaseQueryBuf(pRuntimeEnv->tableqinfoGroupInfo.numOfTables);
|
||||||
|
|
||||||
|
doDestroyTableQueryInfo(&pRuntimeEnv->tableqinfoGroupInfo);
|
||||||
|
|
||||||
teardownQueryRuntimeEnv(&pQInfo->runtimeEnv);
|
teardownQueryRuntimeEnv(&pQInfo->runtimeEnv);
|
||||||
|
|
||||||
SQuery *pQuery = pQInfo->runtimeEnv.pQuery;
|
SQuery *pQuery = pQInfo->runtimeEnv.pQuery;
|
||||||
|
@ -6498,7 +6502,6 @@ void freeQInfo(SQInfo *pQInfo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
doDestroyTableQueryInfo(&pRuntimeEnv->tableqinfoGroupInfo);
|
|
||||||
|
|
||||||
tfree(pQInfo->pBuf);
|
tfree(pQInfo->pBuf);
|
||||||
tfree(pQInfo->sql);
|
tfree(pQInfo->sql);
|
||||||
|
|
|
@ -66,8 +66,8 @@ void cleanupResultRowInfo(SResultRowInfo *pResultRowInfo) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pResultRowInfo->type == TSDB_DATA_TYPE_BINARY || pResultRowInfo->type == TSDB_DATA_TYPE_NCHAR) {
|
for(int32_t i = 0; i < pResultRowInfo->size; ++i) {
|
||||||
for(int32_t i = 0; i < pResultRowInfo->size; ++i) {
|
if (pResultRowInfo->pResult[i]) {
|
||||||
tfree(pResultRowInfo->pResult[i]->key);
|
tfree(pResultRowInfo->pResult[i]->key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,11 +153,8 @@ void clearResultRow(SQueryRuntimeEnv *pRuntimeEnv, SResultRow *pResultRow, int16
|
||||||
pResultRow->offset = -1;
|
pResultRow->offset = -1;
|
||||||
pResultRow->closed = false;
|
pResultRow->closed = false;
|
||||||
|
|
||||||
if (type == TSDB_DATA_TYPE_BINARY || type == TSDB_DATA_TYPE_NCHAR) {
|
tfree(pResultRow->key);
|
||||||
tfree(pResultRow->key);
|
pResultRow->win = TSWINDOW_INITIALIZER;
|
||||||
} else {
|
|
||||||
pResultRow->win = TSWINDOW_INITIALIZER;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO refactor: use macro
|
// TODO refactor: use macro
|
||||||
|
|
Loading…
Reference in New Issue