提交 a1f2ce38 编写于 作者: H Haojun Liao

fix(tsdb): fix memory leak.

上级 09f28589
...@@ -703,6 +703,7 @@ int32_t tsdbFSCreateRefSnapshot(STFileSystem *fs, TFileSetArray **fsetArr) { ...@@ -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;
......
...@@ -4674,7 +4674,7 @@ int32_t tsdbReaderOpen2(void* pVnode, SQueryTableDataCond* pCond, void* pTableLi ...@@ -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) { ...@@ -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) { ...@@ -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 ...@@ -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));
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册