fix(tsdb): fix memory leak.

This commit is contained in:
Haojun Liao 2023-06-20 14:46:32 +08:00
parent 09f2858927
commit a1f2ce389b
2 changed files with 7 additions and 4 deletions

View File

@ -703,6 +703,7 @@ int32_t tsdbFSCreateRefSnapshot(STFileSystem *fs, TFileSetArray **fsetArr) {
int32_t tsdbFSDestroyRefSnapshot(TFileSetArray **fsetArr) { int32_t tsdbFSDestroyRefSnapshot(TFileSetArray **fsetArr) {
if (fsetArr[0]) { if (fsetArr[0]) {
TARRAY2_DESTROY(fsetArr[0], tsdbTFileSetClear); TARRAY2_DESTROY(fsetArr[0], tsdbTFileSetClear);
taosMemoryFreeClear(fsetArr[0]);
fsetArr[0] = NULL; fsetArr[0] = NULL;
} }
return 0; return 0;

View File

@ -4674,7 +4674,7 @@ int32_t tsdbReaderOpen2(void* pVnode, SQueryTableDataCond* pCond, void* pTableLi
_err: _err:
tsdbError("failed to create data reader, code:%s %s", tstrerror(code), idstr); tsdbError("failed to create data reader, code:%s %s", tstrerror(code), idstr);
tsdbReaderClose(*ppReader); tsdbReaderClose2(*ppReader);
*ppReader = NULL; // reset the pointer value. *ppReader = NULL; // reset the pointer value.
return code; return code;
} }
@ -4716,8 +4716,8 @@ void tsdbReaderClose2(STsdbReader* pReader) {
p = pReader->innerReader[1]; p = pReader->innerReader[1];
clearSharedPtr(p); clearSharedPtr(p);
tsdbReaderClose(pReader->innerReader[0]); tsdbReaderClose2(pReader->innerReader[0]);
tsdbReaderClose(pReader->innerReader[1]); tsdbReaderClose2(pReader->innerReader[1]);
} }
} }
@ -4758,7 +4758,7 @@ void tsdbReaderClose2(STsdbReader* pReader) {
} }
qTrace("tsdb/reader-close: %p, untake snapshot", pReader); qTrace("tsdb/reader-close: %p, untake snapshot", pReader);
tsdbUntakeReadSnap(pReader, pReader->pReadSnap, true); tsdbUntakeReadSnap2(pReader, pReader->pReadSnap, true);
pReader->pReadSnap = NULL; pReader->pReadSnap = NULL;
tsdbReleaseReader(pReader); tsdbReleaseReader(pReader);
@ -5676,6 +5676,8 @@ void tsdbUntakeReadSnap2(STsdbReader* pReader, STsdbReadSnap* pSnap, bool proact
if (pSnap->pNode) taosMemoryFree(pSnap->pNode); if (pSnap->pNode) taosMemoryFree(pSnap->pNode);
if (pSnap->pINode) taosMemoryFree(pSnap->pINode); if (pSnap->pINode) taosMemoryFree(pSnap->pINode);
taosMemoryFree(pSnap); taosMemoryFree(pSnap);
tsdbFSDestroyRefSnapshot(&pReader->pfSetArray);
} }
tsdbTrace("vgId:%d, untake read snapshot", TD_VID(pTsdb->pVnode)); tsdbTrace("vgId:%d, untake read snapshot", TD_VID(pTsdb->pVnode));
} }