From 36b2495cf6c084f502a8395cf444b6e67d82e746 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 23 May 2023 15:07:42 +0800 Subject: [PATCH] more code --- .../dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h | 20 +++---- source/dnode/vnode/src/tsdb/dev/tsdbCommit.c | 2 +- source/dnode/vnode/src/tsdb/dev/tsdbFS.c | 11 +++- source/dnode/vnode/src/tsdb/dev/tsdbFSet.c | 59 +++++++++++-------- .../vnode/src/tsdb/dev/tsdbSttFReaderWriter.c | 14 +++-- 5 files changed, 58 insertions(+), 48 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h index ccbecc2c9c..063362db23 100644 --- a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h +++ b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h @@ -29,14 +29,6 @@ typedef TARRAY2(STFileObj *) TFileObjArray; typedef TARRAY2(SSttLvl *) TSttLvlArray; typedef TARRAY2(STFileOp) TFileOpArray; -typedef enum { - TSDB_FOP_NONE = 0, - TSDB_FOP_EXTEND, - TSDB_FOP_CREATE, - TSDB_FOP_DELETE, - TSDB_FOP_TRUNCATE, -} tsdb_fop_t; - // init/clear int32_t tsdbTFileSetInit(int32_t fid, STFileSet **fset); int32_t tsdbTFileSetInitEx(STsdb *pTsdb, const STFileSet *fset1, STFileSet **fset); @@ -52,14 +44,16 @@ int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op); int32_t tsdbTFileSetApplyEdit(STsdb *pTsdb, const STFileSet *fset1, STFileSet *fset); // max commit id int64_t tsdbTFileSetMaxCid(const STFileSet *fset); - +// get SSttLvl *tsdbTFileSetGetLvl(STFileSet *fset, int32_t level); +// is empty +bool tsdbTFileSetIsEmpty(const STFileSet *fset); struct STFileOp { - tsdb_fop_t op; - int32_t fid; - STFile oState; // old file state - STFile nState; // new file state + int32_t fid; + STFile *of; // old file + STFile *nf; // new file + STFile fArr[2]; }; struct SSttLvl { diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c index cf8e62a8db..37158acf78 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c @@ -326,7 +326,7 @@ static int32_t open_committer(STsdb *pTsdb, SCommitInfo *pInfo, SCommitter *pCom pCommitter->minRow = pInfo->info.config.tsdbCfg.minRows; pCommitter->maxRow = pInfo->info.config.tsdbCfg.maxRows; pCommitter->cmprAlg = pInfo->info.config.tsdbCfg.compression; - pCommitter->sttTrigger = 1; // TODO + pCommitter->sttTrigger = 4; // TODO pCommitter->aTbDataP = tsdbMemTableGetTbDataArray(pTsdb->imem); if (pCommitter->aTbDataP == NULL) { diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c index 971bb5a791..f70cb73c7e 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c @@ -496,8 +496,15 @@ static int32_t edit_fs(STFileSystem *fs, const TFileOpArray *opArray) { TSDB_CHECK_CODE(code, lino, _exit); } - { - // TODO: check if a file set should be deleted + // remove empty file set + int32_t i = 0; + while (i < TARRAY2_SIZE(fsetArray)) { + fset = TARRAY2_GET(fsetArray, i); + if (tsdbTFileSetIsEmpty(fset)) { + TARRAY2_REMOVE(fsetArray, i, tsdbTFileSetClear); + } else { + i++; + } } _exit: diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c index c03d9b6ce5..f13ba6887f 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c @@ -259,35 +259,35 @@ int32_t tsdbJsonToTFileSet(STsdb *pTsdb, const cJSON *json, STFileSet **fset) { int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op) { int32_t code = 0; - if (op->oState.size == 0 // - || 0 /* TODO*/ - ) { - STFileObj *fobj; - code = tsdbTFileObjInit(pTsdb, &op->nState, &fobj); - if (code) return code; + // if (op->of.size == 0 // + // || 0 /* TODO*/ + // ) { + // STFileObj *fobj; + // code = tsdbTFileObjInit(pTsdb, &op->nf, &fobj); + // if (code) return code; - if (fobj->f.type == TSDB_FTYPE_STT) { - SSttLvl *lvl = tsdbTFileSetGetLvl(fset, fobj->f.stt.level); - if (!lvl) { - code = tsdbSttLvlInit(fobj->f.stt.level, &lvl); - if (code) return code; + // if (fobj->f.type == TSDB_FTYPE_STT) { + // SSttLvl *lvl = tsdbTFileSetGetLvl(fset, fobj->f.stt.level); + // if (!lvl) { + // code = tsdbSttLvlInit(fobj->f.stt.level, &lvl); + // if (code) return code; - code = TARRAY2_SORT_INSERT(&fset->lvlArr, lvl, tsdbSttLvlCmprFn); - if (code) return code; - } + // code = TARRAY2_SORT_INSERT(&fset->lvlArr, lvl, tsdbSttLvlCmprFn); + // if (code) return code; + // } - code = TARRAY2_SORT_INSERT(&lvl->farr, fobj, tsdbTFileObjCmpr); - if (code) return code; - } else { - fset->farr[fobj->f.type] = fobj; - } - } else if (op->nState.size == 0) { - // delete - ASSERT(0); - } else { - // modify - ASSERT(0); - } + // code = TARRAY2_SORT_INSERT(&lvl->farr, fobj, tsdbTFileObjCmpr); + // if (code) return code; + // } else { + // fset->farr[fobj->f.type] = fobj; + // } + // } else if (op->nf.size == 0) { + // // delete + // ASSERT(0); + // } else { + // // modify + // ASSERT(0); + // } return 0; } @@ -457,4 +457,11 @@ int64_t tsdbTFileSetMaxCid(const STFileSet *fset) { TARRAY2_FOREACH(&lvl->farr, fobj) { maxCid = TMAX(maxCid, fobj->f.cid); } } return maxCid; +} + +bool tsdbTFileSetIsEmpty(const STFileSet *fset) { + for (tsdb_ftype_t ftype = TSDB_FTYPE_MIN; ftype < TSDB_FTYPE_MAX; ++ftype) { + if (fset->farr[ftype] != NULL) return false; + } + return TARRAY2_SIZE(&fset->lvlArr) == 0; } \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c b/source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c index ddd44f38bc..94410ac1be 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c @@ -570,14 +570,16 @@ int32_t tsdbSttFWriterClose(SSttFileWriter **ppWriter, int8_t abort, struct STFi TSDB_CHECK_CODE(code, lino, _exit); if (op) { - op->fid = ppWriter[0]->config.file.fid; - op->oState = ppWriter[0]->config.file; - op->nState = ppWriter[0]->tFile; - if (op->oState.size == 0) { - op->op = TSDB_FOP_CREATE; + STFile *f = &ppWriter[0]->config.file; + op->fid = f->fid; + if (f->size == 0) { + op->of = NULL; } else { - op->op = TSDB_FOP_EXTEND; + op->of = &op->fArr[0]; + op->of[0] = f[0]; } + op->nf = &op->fArr[1]; + op->nf[0] = ppWriter[0]->tFile; } }