diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 66df364b4b..262bd083ef 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -321,7 +321,8 @@ struct STsdbFS { }; struct STsdbTrimHdl { - volatile int8_t state; // 0 idle 1 in use + volatile int8_t state; // 0 idle 1 in use + volatile int8_t limitSpeed; // 0 no limit, 1 with limit volatile int32_t maxRetentFid; volatile int32_t minCommitFid; }; diff --git a/source/dnode/vnode/src/tsdb/tsdbFS.c b/source/dnode/vnode/src/tsdb/tsdbFS.c index 45d28f4135..8fdbd68af3 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS.c @@ -250,7 +250,7 @@ _err: void tsdbFSDestroy(STsdbFS *pFS) { if (pFS->pDelFile) { - taosMemoryFree(pFS->pDelFile); + taosMemoryFreeClear(pFS->pDelFile); } for (int32_t iSet = 0; iSet < taosArrayGetSize(pFS->aDFileSet); iSet++) { @@ -263,7 +263,7 @@ void tsdbFSDestroy(STsdbFS *pFS) { } } - taosArrayDestroy(pFS->aDFileSet); + pFS->aDFileSet = taosArrayDestroy(pFS->aDFileSet); } static int32_t tsdbScanAndTryFixFS(STsdb *pTsdb) { diff --git a/source/dnode/vnode/src/tsdb/tsdbRetention2.c b/source/dnode/vnode/src/tsdb/tsdbRetention2.c index 61ed29368a..a5a16a9602 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRetention2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRetention2.c @@ -174,6 +174,8 @@ _migrate_loop: // reset maxFid = INT32_MIN; fSize = 0; + tsdbFSDestroy(&fs); + tsdbFSDestroy(&fsLatest); code = tsdbFSCopy(pTsdb, &fs); if (code) goto _exit; @@ -275,9 +277,9 @@ _merge_fs: } taosThreadRwlockUnlock(&pTsdb->rwLock); - tsdbFSDestroy(&fs); - _exit: + tsdbFSDestroy(&fs); + tsdbFSDestroy(&fsLatest); if (code != 0) { tsdbError("vgId:%d, tsdb do retention(migrate) failed since %s", TD_VID(pTsdb->pVnode), tstrerror(code)); ASSERT(0);