提交 66aefc39 编写于 作者: H Hongze Cheng

more code

上级 c0b2ff9c
...@@ -16,17 +16,41 @@ ...@@ -16,17 +16,41 @@
#include "tsdb.h" #include "tsdb.h"
typedef struct { typedef struct {
STsdb *pTsdb; } SMemDIter;
STsdbFS fs;
typedef struct {
SArray *aBlockIdx; // SArray<SBlockIdx>
SMapData mDataBlk; // SMapData<SDataBlk>
SBlockData bData
} SDataDIter;
typedef struct {
SArray *aSttBlk; // SArray<SSttBlk>
SBlockData bData;
} SSttDIter;
typedef struct {
STsdb *pTsdb;
STsdbFS fs;
int64_t cid;
int32_t fid;
SDFileSet *pDFileSet;
SRBTree rtree;
} STsdbCompactor; } STsdbCompactor;
#define TSDB_FLG_DEEP_COMPACT 0x1 #define TSDB_FLG_DEEP_COMPACT 0x1
static int32_t tsdbBeginCompact(STsdb *pTsdb) { static int32_t tsdbBeginCompact(STsdb *pTsdb, STsdbCompactor *pCompactor) {
int32_t code = 0; int32_t code = 0;
int32_t lino = 0; int32_t lino = 0;
// TODO pCompactor->pTsdb = pTsdb;
code = tsdbFSCopy(pTsdb, &pCompactor->fs);
TSDB_CHECK_CODE(code, lino, _exit);
pCompactor->fid = INT32_MIN;
_exit: _exit:
if (code) { if (code) {
tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code));
...@@ -34,10 +58,12 @@ _exit: ...@@ -34,10 +58,12 @@ _exit:
return code; return code;
} }
static int32_t tsdbCommitCompact(STsdb *pTsdb) { static int32_t tsdbCommitCompact(STsdbCompactor *pCompactor) {
int32_t code = 0; int32_t code = 0;
int32_t lino = 0; int32_t lino = 0;
STsdb *pTsdb = pCompactor->pTsdb;
// TODO // TODO
_exit: _exit:
...@@ -47,10 +73,12 @@ _exit: ...@@ -47,10 +73,12 @@ _exit:
return code; return code;
} }
static int32_t tsdbAbortCompact(STsdb *pTsdb) { static int32_t tsdbAbortCompact(STsdbCompactor *pCompactor) {
int32_t code = 0; int32_t code = 0;
int32_t lino = 0; int32_t lino = 0;
STsdb *pTsdb = pCompactor->pTsdb;
// TODO // TODO
_exit: _exit:
...@@ -60,11 +88,11 @@ _exit: ...@@ -60,11 +88,11 @@ _exit:
return code; return code;
} }
static int32_t tsdbDeepCompact(STsdb *pTsdb) { static int32_t tsdbDeepCompact(STsdbCompactor *pCompactor) {
int32_t code = 0; int32_t code = 0;
int32_t lino = 0; int32_t lino = 0;
// TODO STsdb *pTsdb = pCompactor->pTsdb;
_exit: _exit:
if (code) { if (code) {
...@@ -73,10 +101,12 @@ _exit: ...@@ -73,10 +101,12 @@ _exit:
return code; return code;
} }
static int32_t tsdbShallowCompact(STsdb *pTsdb) { static int32_t tsdbShallowCompact(STsdbCompactor *pCompactor) {
int32_t code = 0; int32_t code = 0;
int32_t lino = 0; int32_t lino = 0;
STsdb *pTsdb = pCompactor->pTsdb;
// TODO // TODO
_exit: _exit:
...@@ -93,23 +123,30 @@ int32_t tsdbCompact(STsdb *pTsdb, int32_t flag) { ...@@ -93,23 +123,30 @@ int32_t tsdbCompact(STsdb *pTsdb, int32_t flag) {
// Check if can do compact (TODO) // Check if can do compact (TODO)
// Do compact // Do compact
code = tsdbBeginCompact(pTsdb); STsdbCompactor compactor = {0};
code = tsdbBeginCompact(pTsdb, &compactor);
TSDB_CHECK_CODE(code, lino, _exit); TSDB_CHECK_CODE(code, lino, _exit);
if (flag & TSDB_FLG_DEEP_COMPACT) { while (true) {
code = tsdbDeepCompact(pTsdb); compactor.pDFileSet = (SDFileSet *)taosArraySearch(compactor.fs.aDFileSet, &compactor.fid, tDFileSetCmprFn, TD_GT);
TSDB_CHECK_CODE(code, lino, _exit); if (compactor.pDFileSet == NULL) break;
} else {
code = tsdbShallowCompact(pTsdb); if (flag & TSDB_FLG_DEEP_COMPACT) {
TSDB_CHECK_CODE(code, lino, _exit); code = tsdbDeepCompact(&compactor);
TSDB_CHECK_CODE(code, lino, _exit);
} else {
code = tsdbShallowCompact(&compactor);
TSDB_CHECK_CODE(code, lino, _exit);
}
} }
_exit: _exit:
if (code) { if (code) {
tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code)); tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, lino, tstrerror(code));
tsdbAbortCompact(pTsdb); tsdbAbortCompact(&compactor);
} else { } else {
tsdbCommitCompact(pTsdb); tsdbCommitCompact(&compactor);
} }
return code; return code;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册