diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index af0923a8d94a2f8ec27d7481d48cd620dd824d1a..7fd5432a4e67e67390937db295f397fd700598b6 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -703,6 +703,7 @@ int32_t tsdbFSCreateRefSnapshot(STFileSystem *fs, TFileSetArray **fsetArr) { int32_t tsdbFSDestroyRefSnapshot(TFileSetArray **fsetArr) { if (fsetArr[0]) { TARRAY2_DESTROY(fsetArr[0], tsdbTFileSetClear); + taosMemoryFreeClear(fsetArr[0]); fsetArr[0] = NULL; } return 0; diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 148a72a084e7333ee76a67650c4c520327825469..3a7fc84f6cb86a6f533b8e2b82df0147c24a4ba3 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -4674,7 +4674,7 @@ int32_t tsdbReaderOpen2(void* pVnode, SQueryTableDataCond* pCond, void* pTableLi _err: tsdbError("failed to create data reader, code:%s %s", tstrerror(code), idstr); - tsdbReaderClose(*ppReader); + tsdbReaderClose2(*ppReader); *ppReader = NULL; // reset the pointer value. return code; } @@ -4716,8 +4716,8 @@ void tsdbReaderClose2(STsdbReader* pReader) { p = pReader->innerReader[1]; clearSharedPtr(p); - tsdbReaderClose(pReader->innerReader[0]); - tsdbReaderClose(pReader->innerReader[1]); + tsdbReaderClose2(pReader->innerReader[0]); + tsdbReaderClose2(pReader->innerReader[1]); } } @@ -4758,7 +4758,7 @@ void tsdbReaderClose2(STsdbReader* pReader) { } qTrace("tsdb/reader-close: %p, untake snapshot", pReader); - tsdbUntakeReadSnap(pReader, pReader->pReadSnap, true); + tsdbUntakeReadSnap2(pReader, pReader->pReadSnap, true); pReader->pReadSnap = NULL; tsdbReleaseReader(pReader); @@ -5676,6 +5676,8 @@ void tsdbUntakeReadSnap2(STsdbReader* pReader, STsdbReadSnap* pSnap, bool proact if (pSnap->pNode) taosMemoryFree(pSnap->pNode); if (pSnap->pINode) taosMemoryFree(pSnap->pINode); taosMemoryFree(pSnap); + + tsdbFSDestroyRefSnapshot(&pReader->pfSetArray); } tsdbTrace("vgId:%d, untake read snapshot", TD_VID(pTsdb->pVnode)); }