diff --git a/source/dnode/vnode/src/tsdb/tsdbCompact.c b/source/dnode/vnode/src/tsdb/tsdbCompact.c index fb3917be64faa058b52f1f13a86ec0034486f279..83f86a80a78a5d2ace726bc28dd2953e13ab1a74 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCompact.c +++ b/source/dnode/vnode/src/tsdb/tsdbCompact.c @@ -20,8 +20,96 @@ typedef struct { STsdbFS fs; } STsdbCompactor; -int32_t tsdbCompact(STsdb *pTsdb) { +#define TSDB_FLG_DEEP_COMPACT 0x1 + +static int32_t tsdbBeginCompact(STsdb *pTsdb) { + int32_t code = 0; + int32_t lino = 0; + + // TODO +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + } + return code; +} + +static int32_t tsdbCommitCompact(STsdb *pTsdb) { + int32_t code = 0; + int32_t lino = 0; + + // TODO + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + } + return code; +} + +static int32_t tsdbAbortCompact(STsdb *pTsdb) { + int32_t code = 0; + int32_t lino = 0; + + // TODO + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + } + return code; +} + +static int32_t tsdbDeepCompact(STsdb *pTsdb) { + int32_t code = 0; + int32_t lino = 0; + + // TODO + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + } + return code; +} + +static int32_t tsdbShallowCompact(STsdb *pTsdb) { int32_t code = 0; + int32_t lino = 0; + // TODO + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + } + return code; +} + +int32_t tsdbCompact(STsdb *pTsdb, int32_t flag) { + int32_t code = 0; + int32_t lino = 0; + + // Check if can do compact (TODO) + + // Do compact + code = tsdbBeginCompact(pTsdb); + TSDB_CHECK_CODE(code, lino, _exit); + + if (flag & TSDB_FLG_DEEP_COMPACT) { + code = tsdbDeepCompact(pTsdb); + TSDB_CHECK_CODE(code, lino, _exit); + } else { + code = tsdbShallowCompact(pTsdb); + TSDB_CHECK_CODE(code, lino, _exit); + } + +_exit: + if (code) { + tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); + tsdbAbortCompact(pTsdb); + } else { + tsdbCommitCompact(pTsdb); + } return code; }