memory leak

This commit is contained in:
dmchen 2023-10-30 11:34:34 +00:00
parent 0f40e1dbb9
commit fe044051c8
1 changed files with 20 additions and 14 deletions

View File

@ -950,9 +950,11 @@ static int32_t vnodeProcessCreateTbReq(SVnode *pVnode, int64_t ver, void *pReq,
taosArrayPush(rsp.pArray, &cRsp); taosArrayPush(rsp.pArray, &cRsp);
char* str = taosMemoryCalloc(1, TSDB_TABLE_FNAME_LEN); if(tsEnableAuditCreateTable){
strcpy(str, pCreateReq->name); char* str = taosMemoryCalloc(1, TSDB_TABLE_FNAME_LEN);
taosArrayPush(tbNames, str); strcpy(str, pCreateReq->name);
taosArrayPush(tbNames, &str);
}
} }
vDebug("vgId:%d, add %d new created tables into query table list", TD_VID(pVnode), (int32_t)taosArrayGetSize(tbUids)); vDebug("vgId:%d, add %d new created tables into query table list", TD_VID(pVnode), (int32_t)taosArrayGetSize(tbUids));
@ -982,11 +984,12 @@ static int32_t vnodeProcessCreateTbReq(SVnode *pVnode, int64_t ver, void *pReq,
SStringBuilder sb = {0}; SStringBuilder sb = {0};
for(int32_t iReq = 0; iReq < req.nReqs; iReq++){ for(int32_t iReq = 0; iReq < req.nReqs; iReq++){
char* key = taosArrayGet(tbNames, iReq); char** key = (char**)taosArrayGet(tbNames, iReq);
taosStringBuilderAppendStringLen(&sb, key, strlen(key)); taosStringBuilderAppendStringLen(&sb, *key, strlen(*key));
if(iReq < req.nReqs - 1){ if(iReq < req.nReqs - 1){
taosStringBuilderAppendChar(&sb, ','); taosStringBuilderAppendChar(&sb, ',');
} }
taosMemoryFreeClear(*key);
} }
size_t len = 0; size_t len = 0;
@ -1002,13 +1005,13 @@ _exit:
pCreateReq = req.pReqs + iReq; pCreateReq = req.pReqs + iReq;
taosMemoryFree(pCreateReq->sql); taosMemoryFree(pCreateReq->sql);
taosMemoryFree(pCreateReq->comment); taosMemoryFree(pCreateReq->comment);
taosArrayDestroy(pCreateReq->ctb.tagName); taosArrayDestroy(pCreateReq->ctb.tagName);
} }
taosArrayDestroyEx(rsp.pArray, tFreeSVCreateTbRsp); taosArrayDestroyEx(rsp.pArray, tFreeSVCreateTbRsp);
taosArrayDestroy(tbUids); taosArrayDestroy(tbUids);
tDecoderClear(&decoder); tDecoderClear(&decoder);
tEncoderClear(&encoder); tEncoderClear(&encoder);
taosArrayDestroyEx(tbNames, taosMemoryFree); taosArrayDestroy(tbNames);
return rcode; return rcode;
} }
@ -1184,9 +1187,11 @@ static int32_t vnodeProcessDropTbReq(SVnode *pVnode, int64_t ver, void *pReq, in
taosArrayPush(rsp.pArray, &dropTbRsp); taosArrayPush(rsp.pArray, &dropTbRsp);
char* str = taosMemoryCalloc(1, TSDB_TABLE_FNAME_LEN); if(tsEnableAuditCreateTable){
strcpy(str, pDropTbReq->name); char* str = taosMemoryCalloc(1, TSDB_TABLE_FNAME_LEN);
taosArrayPush(tbNames, str); strcpy(str, pDropTbReq->name);
taosArrayPush(tbNames, &str);
}
} }
tqUpdateTbUidList(pVnode->pTq, tbUids, false); tqUpdateTbUidList(pVnode->pTq, tbUids, false);
@ -1200,17 +1205,18 @@ static int32_t vnodeProcessDropTbReq(SVnode *pVnode, int64_t ver, void *pReq, in
SStringBuilder sb = {0}; SStringBuilder sb = {0};
for(int32_t iReq = 0; iReq < req.nReqs; iReq++){ for(int32_t iReq = 0; iReq < req.nReqs; iReq++){
char* key = taosArrayGet(tbNames, iReq); char** key = (char**)taosArrayGet(tbNames, iReq);
taosStringBuilderAppendStringLen(&sb, key, strlen(key)); taosStringBuilderAppendStringLen(&sb, *key, strlen(*key));
if(iReq < req.nReqs - 1){ if(iReq < req.nReqs - 1){
taosStringBuilderAppendChar(&sb, ','); taosStringBuilderAppendChar(&sb, ',');
} }
taosMemoryFreeClear(*key);
} }
size_t len = 0; size_t len = 0;
char* keyJoined = taosStringBuilderGetResult(&sb, &len); char* keyJoined = taosStringBuilderGetResult(&sb, &len);
auditRecord(NULL, clusterId, "createTable", name.dbname, "", keyJoined, len); auditRecord(NULL, clusterId, "dropTable", name.dbname, "", keyJoined, len);
taosStringBuilderDestroy(&sb); taosStringBuilderDestroy(&sb);
} }
@ -1225,7 +1231,7 @@ _exit:
tEncodeSVDropTbBatchRsp(&encoder, &rsp); tEncodeSVDropTbBatchRsp(&encoder, &rsp);
tEncoderClear(&encoder); tEncoderClear(&encoder);
taosArrayDestroy(rsp.pArray); taosArrayDestroy(rsp.pArray);
taosArrayDestroyEx(tbNames, taosMemoryFree); taosArrayDestroy(tbNames);
return 0; return 0;
} }