chore: fs merge optimization for data migrate

This commit is contained in:
Cary Xu 2022-09-28 12:56:17 +08:00
parent b78a39ced1
commit d3c335a06e
1 changed files with 19 additions and 10 deletions

View File

@ -221,22 +221,31 @@ _commit_conflict_check:
_merge_fs:
taosThreadRwlockWrlock(&pTsdb->rwLock);
if ((code = tsdbFSCopy(pTsdb, &fsLatest))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
}
// 1) merge tsdbFSNew and pTsdb->fs
if ((code = tsdbFSUpdDel(pTsdb, &fsLatest, &fs, maxFid))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
// 1) prepare fs, merge tsdbFSNew and pTsdb->fs if needed
STsdbFS *pTsdbFS = &fs;
ASSERT(fs.version <= pTsdb->fs.version);
if (fs.version < pTsdb->fs.version) {
if ((code = tsdbFSCopy(pTsdb, &fsLatest))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
}
if ((code = tsdbFSUpdDel(pTsdb, &fsLatest, &fs, maxFid))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
}
pTsdbFS = &fsLatest;
}
// 2) save CURRENT
if ((code = tsdbFSCommit1(pTsdb, &fsLatest))) {
if ((code = tsdbFSCommit1(pTsdb, pTsdbFS))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
}
// 3) apply the tsdbFS to pTsdb->fs
if ((code = tsdbFSCommit2(pTsdb, &fsLatest))) {
if ((code = tsdbFSCommit2(pTsdb, pTsdbFS))) {
taosThreadRwlockUnlock(&pTsdb->rwLock);
goto _exit;
}