fix file remove by edit
This commit is contained in:
parent
ba38a625cf
commit
1556dedb85
|
@ -511,6 +511,9 @@ static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
if (code) {
|
||||||
|
TSDB_ERROR_LOG(TD_VID(fs->tsdb->pVnode), lino, code);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,7 +600,6 @@ int32_t tsdbFSEditBegin(STFileSystem *fs, const TFileOpArray *opArray, EFEditT e
|
||||||
}
|
}
|
||||||
|
|
||||||
tsem_wait(&fs->canEdit);
|
tsem_wait(&fs->canEdit);
|
||||||
|
|
||||||
fs->etype = etype;
|
fs->etype = etype;
|
||||||
|
|
||||||
// edit
|
// edit
|
||||||
|
@ -646,6 +648,7 @@ _exit:
|
||||||
if (code) {
|
if (code) {
|
||||||
TSDB_ERROR_LOG(TD_VID(fs->tsdb->pVnode), lino, code);
|
TSDB_ERROR_LOG(TD_VID(fs->tsdb->pVnode), lino, code);
|
||||||
} else {
|
} else {
|
||||||
|
tsdbDebug("vgId:%d %s done, etype:%d", TD_VID(fs->tsdb->pVnode), __func__, fs->etype);
|
||||||
tsem_post(&fs->canEdit);
|
tsem_post(&fs->canEdit);
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -305,7 +305,7 @@ int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op) {
|
||||||
STFileObj *tfobjp = &tfobj;
|
STFileObj *tfobjp = &tfobj;
|
||||||
int32_t idx = TARRAY2_SEARCH_IDX(lvl->fobjArr, &tfobjp, tsdbTFileObjCmpr, TD_EQ);
|
int32_t idx = TARRAY2_SEARCH_IDX(lvl->fobjArr, &tfobjp, tsdbTFileObjCmpr, TD_EQ);
|
||||||
ASSERT(idx >= 0);
|
ASSERT(idx >= 0);
|
||||||
TARRAY2_REMOVE(lvl->fobjArr, idx, tsdbSttLvlRemoveFObj);
|
TARRAY2_REMOVE(lvl->fobjArr, idx, tsdbSttLvlClearFObj);
|
||||||
|
|
||||||
if (TARRAY2_SIZE(lvl->fobjArr) == 0) {
|
if (TARRAY2_SIZE(lvl->fobjArr) == 0) {
|
||||||
// TODO: remove the stt level if no file exists anymore
|
// TODO: remove the stt level if no file exists anymore
|
||||||
|
|
|
@ -203,8 +203,9 @@ int32_t tsdbTFileObjRef(STFileObj *fobj) {
|
||||||
int32_t nRef;
|
int32_t nRef;
|
||||||
taosThreadMutexLock(&fobj->mutex);
|
taosThreadMutexLock(&fobj->mutex);
|
||||||
ASSERT(fobj->ref > 0 && fobj->state == TSDB_FSTATE_LIVE);
|
ASSERT(fobj->ref > 0 && fobj->state == TSDB_FSTATE_LIVE);
|
||||||
nRef = fobj->ref++;
|
nRef = ++fobj->ref;
|
||||||
taosThreadMutexUnlock(&fobj->mutex);
|
taosThreadMutexUnlock(&fobj->mutex);
|
||||||
|
tsdbTrace("ref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,6 +214,7 @@ int32_t tsdbTFileObjUnref(STFileObj *fobj) {
|
||||||
int32_t nRef = --fobj->ref;
|
int32_t nRef = --fobj->ref;
|
||||||
taosThreadMutexUnlock(&fobj->mutex);
|
taosThreadMutexUnlock(&fobj->mutex);
|
||||||
ASSERT(nRef >= 0);
|
ASSERT(nRef >= 0);
|
||||||
|
tsdbTrace("unref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||||
if (nRef == 0) {
|
if (nRef == 0) {
|
||||||
if (fobj->state == TSDB_FSTATE_DEAD) {
|
if (fobj->state == TSDB_FSTATE_DEAD) {
|
||||||
remove_file(fobj->fname);
|
remove_file(fobj->fname);
|
||||||
|
@ -229,6 +231,7 @@ int32_t tsdbTFileObjRemove(STFileObj *fobj) {
|
||||||
fobj->state = TSDB_FSTATE_DEAD;
|
fobj->state = TSDB_FSTATE_DEAD;
|
||||||
int32_t nRef = --fobj->ref;
|
int32_t nRef = --fobj->ref;
|
||||||
taosThreadMutexUnlock(&fobj->mutex);
|
taosThreadMutexUnlock(&fobj->mutex);
|
||||||
|
tsdbTrace("remove unref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||||
if (nRef == 0) {
|
if (nRef == 0) {
|
||||||
remove_file(fobj->fname);
|
remove_file(fobj->fname);
|
||||||
taosMemoryFree(fobj);
|
taosMemoryFree(fobj);
|
||||||
|
|
|
@ -383,7 +383,7 @@ _exit:
|
||||||
} else {
|
} else {
|
||||||
tsdbDebug("vgId:%d %s done, fid:%d", TD_VID(merger->tsdb->pVnode), __func__, fset->fid);
|
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) {
|
static int32_t tsdbDoMerge(SMerger *merger) {
|
||||||
|
|
|
@ -147,7 +147,11 @@ static void* loop(void* arg) {
|
||||||
SVnodeTask* pTask;
|
SVnodeTask* pTask;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
setThreadName("vnode-commit");
|
if (tp == &vnodeGlobal.tp[0]) {
|
||||||
|
setThreadName("vnode-commit");
|
||||||
|
} else if (tp == &vnodeGlobal.tp[1]) {
|
||||||
|
setThreadName("vnode-merge");
|
||||||
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
taosThreadMutexLock(&(tp->mutex));
|
taosThreadMutexLock(&(tp->mutex));
|
||||||
|
|
Loading…
Reference in New Issue