From 1556dedb858021adde9b1cfeb7f7b4a3f2a4fc54 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 29 Jun 2023 14:03:01 +0800 Subject: [PATCH] fix file remove by edit --- source/dnode/vnode/src/tsdb/tsdbFS2.c | 5 ++++- source/dnode/vnode/src/tsdb/tsdbFSet2.c | 2 +- source/dnode/vnode/src/tsdb/tsdbFile2.c | 5 ++++- source/dnode/vnode/src/tsdb/tsdbMerge.c | 2 +- source/dnode/vnode/src/vnd/vnodeModule.c | 6 +++++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index b2e579f4dd..82d1530ad5 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -511,6 +511,9 @@ static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) { } _exit: + if (code) { + TSDB_ERROR_LOG(TD_VID(fs->tsdb->pVnode), lino, code); + } return code; } @@ -597,7 +600,6 @@ int32_t tsdbFSEditBegin(STFileSystem *fs, const TFileOpArray *opArray, EFEditT e } tsem_wait(&fs->canEdit); - fs->etype = etype; // edit @@ -646,6 +648,7 @@ _exit: if (code) { TSDB_ERROR_LOG(TD_VID(fs->tsdb->pVnode), lino, code); } else { + tsdbDebug("vgId:%d %s done, etype:%d", TD_VID(fs->tsdb->pVnode), __func__, fs->etype); tsem_post(&fs->canEdit); } return code; diff --git a/source/dnode/vnode/src/tsdb/tsdbFSet2.c b/source/dnode/vnode/src/tsdb/tsdbFSet2.c index f16f29c8f7..3f8bddc27f 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSet2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFSet2.c @@ -305,7 +305,7 @@ int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op) { STFileObj *tfobjp = &tfobj; int32_t idx = TARRAY2_SEARCH_IDX(lvl->fobjArr, &tfobjp, tsdbTFileObjCmpr, TD_EQ); ASSERT(idx >= 0); - TARRAY2_REMOVE(lvl->fobjArr, idx, tsdbSttLvlRemoveFObj); + TARRAY2_REMOVE(lvl->fobjArr, idx, tsdbSttLvlClearFObj); if (TARRAY2_SIZE(lvl->fobjArr) == 0) { // TODO: remove the stt level if no file exists anymore diff --git a/source/dnode/vnode/src/tsdb/tsdbFile2.c b/source/dnode/vnode/src/tsdb/tsdbFile2.c index 796bb78990..be021169cd 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFile2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFile2.c @@ -203,8 +203,9 @@ int32_t tsdbTFileObjRef(STFileObj *fobj) { int32_t nRef; taosThreadMutexLock(&fobj->mutex); ASSERT(fobj->ref > 0 && fobj->state == TSDB_FSTATE_LIVE); - nRef = fobj->ref++; + nRef = ++fobj->ref; taosThreadMutexUnlock(&fobj->mutex); + tsdbTrace("ref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef); return 0; } @@ -213,6 +214,7 @@ int32_t tsdbTFileObjUnref(STFileObj *fobj) { int32_t nRef = --fobj->ref; taosThreadMutexUnlock(&fobj->mutex); ASSERT(nRef >= 0); + tsdbTrace("unref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef); if (nRef == 0) { if (fobj->state == TSDB_FSTATE_DEAD) { remove_file(fobj->fname); @@ -229,6 +231,7 @@ int32_t tsdbTFileObjRemove(STFileObj *fobj) { fobj->state = TSDB_FSTATE_DEAD; int32_t nRef = --fobj->ref; taosThreadMutexUnlock(&fobj->mutex); + tsdbTrace("remove unref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef); if (nRef == 0) { remove_file(fobj->fname); taosMemoryFree(fobj); diff --git a/source/dnode/vnode/src/tsdb/tsdbMerge.c b/source/dnode/vnode/src/tsdb/tsdbMerge.c index 80456ae2e6..a1feb1ca6d 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMerge.c +++ b/source/dnode/vnode/src/tsdb/tsdbMerge.c @@ -383,7 +383,7 @@ _exit: } else { tsdbDebug("vgId:%d %s done, fid:%d", TD_VID(merger->tsdb->pVnode), __func__, fset->fid); } - return 0; + return code; } static int32_t tsdbDoMerge(SMerger *merger) { diff --git a/source/dnode/vnode/src/vnd/vnodeModule.c b/source/dnode/vnode/src/vnd/vnodeModule.c index 09d2e445c7..74a8d14a86 100644 --- a/source/dnode/vnode/src/vnd/vnodeModule.c +++ b/source/dnode/vnode/src/vnd/vnodeModule.c @@ -147,7 +147,11 @@ static void* loop(void* arg) { SVnodeTask* pTask; int ret; - setThreadName("vnode-commit"); + if (tp == &vnodeGlobal.tp[0]) { + setThreadName("vnode-commit"); + } else if (tp == &vnodeGlobal.tp[1]) { + setThreadName("vnode-merge"); + } for (;;) { taosThreadMutexLock(&(tp->mutex));