From 90a96622e75c6d0aea67440b7edeb4977eaf35fc Mon Sep 17 00:00:00 2001 From: Cary Xu Date: Mon, 6 Dec 2021 16:56:29 +0800 Subject: [PATCH] [TS-784]: make sure keep1<=keep2<=keep in tsdb --- src/tsdb/src/tsdbMain.c | 54 ++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index 39a0543b23..c270a10f4b 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -505,26 +505,46 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg) { } // Check keep - if (pCfg->keep == -1) { - pCfg->keep = TSDB_DEFAULT_KEEP; - } else { - if (pCfg->keep < TSDB_MIN_KEEP || pCfg->keep > TSDB_MAX_KEEP) { - tsdbError( - "vgId:%d invalid keep configuration! keep %d TSDB_MIN_KEEP %d " - "TSDB_MAX_KEEP %d", - pCfg->tsdbId, pCfg->keep, TSDB_MIN_KEEP, TSDB_MAX_KEEP); - terrno = TSDB_CODE_TDB_INVALID_CONFIG; - return -1; - } - } +#if 0 // already checked and set in mnodeSetDefaultDbCfg + // if (pCfg->keep == -1) { + // pCfg->keep = TSDB_DEFAULT_KEEP; + // } else { + // if (pCfg->keep < TSDB_MIN_KEEP || pCfg->keep > TSDB_MAX_KEEP) { + // tsdbError( + // "vgId:%d invalid keep configuration! keep %d TSDB_MIN_KEEP %d " + // "TSDB_MAX_KEEP %d", + // pCfg->tsdbId, pCfg->keep, TSDB_MIN_KEEP, TSDB_MAX_KEEP); + // terrno = TSDB_CODE_TDB_INVALID_CONFIG; + // return -1; + // } + // } - if (pCfg->keep1 == 0) { - pCfg->keep1 = pCfg->keep; - } + // if (pCfg->keep1 == 0) { + // pCfg->keep1 = pCfg->keep; + // } + + // if (pCfg->keep2 == 0) { + // pCfg->keep2 = pCfg->keep; + // } +#endif - if (pCfg->keep2 == 0) { - pCfg->keep2 = pCfg->keep; + int32_t keepMin = pCfg->keep1; + int32_t keepMid = pCfg->keep2; + int32_t keepMax = pCfg->keep; + + if (keepMin > keepMid) { + SWAP(keepMin, keepMid, int32_t); + } + if (keepMin > keepMax) { + SWAP(keepMin, keepMax, int32_t); } + if (keepMid > keepMax) { + SWAP(keepMid, keepMax, int32_t); + } + + pCfg->keep = keepMax; + pCfg->keep1 = keepMin; + pCfg->keep2 = keepMid; // update check if (pCfg->update < TD_ROW_DISCARD_UPDATE || pCfg->update > TD_ROW_PARTIAL_UPDATE) -- GitLab