[TD-2454]<fix>: fix client memory leaks.
This commit is contained in:
parent
3eb49a5682
commit
37c4530974
|
@ -2209,10 +2209,10 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
|
||||||
// restore user defined fp
|
// restore user defined fp
|
||||||
pParentObj->fp = pParentObj->fetchFp;
|
pParentObj->fp = pParentObj->fetchFp;
|
||||||
int32_t numOfSub = pParentObj->subState.numOfSub;
|
int32_t numOfSub = pParentObj->subState.numOfSub;
|
||||||
|
doFreeInsertSupporter(pParentObj);
|
||||||
|
|
||||||
if (pParentObj->res.code == TSDB_CODE_SUCCESS) {
|
if (pParentObj->res.code == TSDB_CODE_SUCCESS) {
|
||||||
tscDebug("%p Async insertion completed, total inserted:%d", pParentObj, pParentObj->res.numOfRows);
|
tscDebug("%p Async insertion completed, total inserted:%d", pParentObj, pParentObj->res.numOfRows);
|
||||||
doFreeInsertSupporter(pParentObj);
|
|
||||||
|
|
||||||
// todo remove this parameter in async callback function definition.
|
// todo remove this parameter in async callback function definition.
|
||||||
// all data has been sent to vnode, call user function
|
// all data has been sent to vnode, call user function
|
||||||
|
@ -2220,7 +2220,6 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
|
||||||
(*pParentObj->fp)(pParentObj->param, pParentObj, v);
|
(*pParentObj->fp)(pParentObj->param, pParentObj, v);
|
||||||
} else {
|
} else {
|
||||||
if (!needRetryInsert(pParentObj, numOfSub)) {
|
if (!needRetryInsert(pParentObj, numOfSub)) {
|
||||||
doFreeInsertSupporter(pParentObj);
|
|
||||||
tscQueueAsyncRes(pParentObj);
|
tscQueueAsyncRes(pParentObj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2263,7 +2262,6 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
pParentObj->res.code = code;
|
pParentObj->res.code = code;
|
||||||
doFreeInsertSupporter(pParentObj);
|
|
||||||
tscQueueAsyncRes(pParentObj);
|
tscQueueAsyncRes(pParentObj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2303,7 +2301,11 @@ int32_t tscHandleMultivnodeInsert(SSqlObj *pSql) {
|
||||||
if (pSql->pSubs != NULL) {
|
if (pSql->pSubs != NULL) {
|
||||||
for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) {
|
for(int32_t i = 0; i < pSql->subState.numOfSub; ++i) {
|
||||||
SSqlObj* pSub = pSql->pSubs[i];
|
SSqlObj* pSub = pSql->pSubs[i];
|
||||||
|
SInsertSupporter* pSup = calloc(1, sizeof(SInsertSupporter));
|
||||||
|
pSup->index = i;
|
||||||
|
pSup->pSql = pSql;
|
||||||
|
|
||||||
|
pSub->param = pSup;
|
||||||
tscDebug("%p sub:%p launch sub insert, orderOfSub:%d", pSql, pSub, i);
|
tscDebug("%p sub:%p launch sub insert, orderOfSub:%d", pSql, pSub, i);
|
||||||
if (pSub->res.code != TSDB_CODE_SUCCESS) {
|
if (pSub->res.code != TSDB_CODE_SUCCESS) {
|
||||||
tscHandleInsertRetry(pSql, pSub);
|
tscHandleInsertRetry(pSql, pSub);
|
||||||
|
|
|
@ -2589,6 +2589,8 @@ void tscSVgroupInfoCopy(SVgroupInfo* dst, const SVgroupInfo* src) {
|
||||||
for(int32_t i = 0; i < dst->numOfEps; ++i) {
|
for(int32_t i = 0; i < dst->numOfEps; ++i) {
|
||||||
tfree(dst->epAddr[i].fqdn);
|
tfree(dst->epAddr[i].fqdn);
|
||||||
dst->epAddr[i].port = src->epAddr[i].port;
|
dst->epAddr[i].port = src->epAddr[i].port;
|
||||||
|
assert(dst->epAddr[i].fqdn == NULL);
|
||||||
|
|
||||||
dst->epAddr[i].fqdn = strdup(src->epAddr[i].fqdn);
|
dst->epAddr[i].fqdn = strdup(src->epAddr[i].fqdn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue