more code
This commit is contained in:
parent
ab7f6eb764
commit
7d7c8af852
|
@ -13,6 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "tsdbDataFReaderWriter.h"
|
||||||
#include "tsdbFS.h"
|
#include "tsdbFS.h"
|
||||||
#include "tsdbSttFReaderWriter.h"
|
#include "tsdbSttFReaderWriter.h"
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ typedef struct {
|
||||||
typedef struct {
|
typedef struct {
|
||||||
STsdb *tsdb;
|
STsdb *tsdb;
|
||||||
SMergeCtx ctx;
|
SMergeCtx ctx;
|
||||||
|
SSttFileWriter *sttWriter;
|
||||||
|
SDataFileWriter *dataWriter;
|
||||||
TFileOpArray fopArr;
|
TFileOpArray fopArr;
|
||||||
} SMerger;
|
} SMerger;
|
||||||
|
|
||||||
|
@ -68,25 +70,35 @@ static int32_t tsdbMergeFileSet(SMerger *merger, STFileSet *fset) {
|
||||||
{ // prepare the merger file set
|
{ // prepare the merger file set
|
||||||
SSttLvl *lvl;
|
SSttLvl *lvl;
|
||||||
STFileObj *fobj;
|
STFileObj *fobj;
|
||||||
TARRAY2_FOREACH(&fset->lvlArr, lvl) {
|
bool mergerToData = true;
|
||||||
TARRAY2_FOREACH(&lvl->farr, fobj) {
|
int32_t level = -1;
|
||||||
if (fobj->f.stt.nseg >= merger->tsdb->pVnode->config.sttTrigger) {
|
|
||||||
STFileOp op = {
|
TARRAY2_FOREACH(&fset->lvlArr, lvl) {
|
||||||
.fid = fset->fid,
|
if (lvl->level - level > 1) {
|
||||||
.optype = TSDB_FOP_REMOVE,
|
mergerToData = false;
|
||||||
.of = fobj->f,
|
break;
|
||||||
};
|
}
|
||||||
|
|
||||||
code = TARRAY2_APPEND(&merger->fopArr, op);
|
|
||||||
TSDB_CHECK_CODE(code, lino, _exit);
|
|
||||||
} else {
|
|
||||||
if (lvl->level == 0) {
|
if (lvl->level == 0) {
|
||||||
continue;
|
|
||||||
} else {
|
} else {
|
||||||
// TODO
|
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:
|
_exit:
|
||||||
if (code) {
|
if (code) {
|
||||||
tsdbError("vgId:%d %s failed at line %d since %s", vid, __func__, lino, tstrerror(code));
|
tsdbError("vgId:%d %s failed at line %d since %s", vid, __func__, lino, tstrerror(code));
|
||||||
} else {
|
} else if (merger.ctx.launched) {
|
||||||
tsdbDebug("vgId:%d %s done, do merge: %d", vid, __func__, merger.ctx.launched);
|
tsdbDebug("vgId:%d %s done", vid, __func__);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue