From 7d7c8af852deaaef271959d8a325f74e5a9a81a5 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 24 May 2023 18:28:44 +0800 Subject: [PATCH] more code --- .../dnode/vnode/src/tsdb/dev/inc/tsdbMerge.h | 1 + source/dnode/vnode/src/tsdb/dev/tsdbMerge.c | 56 +++++++++++-------- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/dev/inc/tsdbMerge.h b/source/dnode/vnode/src/tsdb/dev/inc/tsdbMerge.h index 313df5f223..ff35f28b76 100644 --- a/source/dnode/vnode/src/tsdb/dev/inc/tsdbMerge.h +++ b/source/dnode/vnode/src/tsdb/dev/inc/tsdbMerge.h @@ -13,6 +13,7 @@ * along with this program. If not, see . */ +#include "tsdbDataFReaderWriter.h" #include "tsdbFS.h" #include "tsdbSttFReaderWriter.h" diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbMerge.c b/source/dnode/vnode/src/tsdb/dev/tsdbMerge.c index 2dfa2c38ad..21da615825 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbMerge.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbMerge.c @@ -20,9 +20,11 @@ typedef struct { } SMergeCtx; typedef struct { - STsdb *tsdb; - SMergeCtx ctx; - TFileOpArray fopArr; + STsdb *tsdb; + SMergeCtx ctx; + SSttFileWriter *sttWriter; + SDataFileWriter *dataWriter; + TFileOpArray fopArr; } SMerger; static int32_t tsdbMergerOpen(SMerger *merger) { @@ -68,25 +70,35 @@ static int32_t tsdbMergeFileSet(SMerger *merger, STFileSet *fset) { { // prepare the merger file set SSttLvl *lvl; STFileObj *fobj; - TARRAY2_FOREACH(&fset->lvlArr, lvl) { - TARRAY2_FOREACH(&lvl->farr, fobj) { - if (fobj->f.stt.nseg >= merger->tsdb->pVnode->config.sttTrigger) { - STFileOp op = { - .fid = fset->fid, - .optype = TSDB_FOP_REMOVE, - .of = fobj->f, - }; + bool mergerToData = true; + int32_t level = -1; - code = TARRAY2_APPEND(&merger->fopArr, op); - TSDB_CHECK_CODE(code, lino, _exit); - } else { - if (lvl->level == 0) { - continue; - } else { - // TODO - } - } + TARRAY2_FOREACH(&fset->lvlArr, lvl) { + if (lvl->level - level > 1) { + mergerToData = false; + break; } + + if (lvl->level == 0) { + } else { + ASSERT(TARRAY2_SIZE(&lvl->farr) == 1); + + fobj = TARRAY2_FIRST(&lvl->farr); + } + } + + // merge to level + level = level + 1; + lvl = tsdbTFileSetGetLvl(fset, level); + if (lvl == NULL) { + // open new stt file to merge to + } else { + // open existing stt file to merge to + } + + if (mergerToData) { + // code = tsdbDataFWriterOpen(SDataFWriter * *ppWriter, STsdb * pTsdb, SDFileSet * pSet); + // TSDB_CHECK_CODE(code, lino, _exit); } } @@ -151,8 +163,8 @@ int32_t tsdbMerge(STsdb *tsdb) { _exit: if (code) { tsdbError("vgId:%d %s failed at line %d since %s", vid, __func__, lino, tstrerror(code)); - } else { - tsdbDebug("vgId:%d %s done, do merge: %d", vid, __func__, merger.ctx.launched); + } else if (merger.ctx.launched) { + tsdbDebug("vgId:%d %s done", vid, __func__); } return 0; }