From ead1a3101a4ace9cf23f0c645d0b65fdcbefdcee Mon Sep 17 00:00:00 2001 From: hzcheng Date: Mon, 4 May 2020 16:04:04 +0800 Subject: [PATCH 01/21] fix part of memory leak --- src/vnode/src/vnodeWrite.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 278a2bb747..d7d43cf453 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -111,11 +111,13 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe int32_t code = 0; dTrace("pVnode:%p vgId:%d, table:%s, start to create", pVnode, pVnode->vgId, pTable->tableId); - int16_t numOfColumns = htons(pTable->numOfColumns); - int16_t numOfTags = htons(pTable->numOfTags); - int32_t sid = htonl(pTable->sid); - uint64_t uid = htobe64(pTable->uid); - SSchema *pSchema = (SSchema *) pTable->data; + int16_t numOfColumns = htons(pTable->numOfColumns); + int16_t numOfTags = htons(pTable->numOfTags); + int32_t sid = htonl(pTable->sid); + uint64_t uid = htobe64(pTable->uid); + SSchema * pSchema = (SSchema *)pTable->data; + STSchema *pDestTagSchema = NULL; + SDataRow dataRow = NULL; int32_t totalCols = numOfColumns + numOfTags; @@ -130,7 +132,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe tsdbTableSetName(&tCfg, pTable->tableId, false); if (numOfTags != 0) { - STSchema *pDestTagSchema = tdNewSchema(numOfTags); + pDestTagSchema = tdNewSchema(numOfTags); for (int i = numOfColumns; i < totalCols; i++) { tdSchemaAddCol(pDestTagSchema, pSchema[i].type, htons(pSchema[i].colId), htons(pSchema[i].bytes)); } @@ -139,7 +141,7 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe char *pTagData = pTable->data + totalCols * sizeof(SSchema); int accumBytes = 0; - SDataRow dataRow = tdNewDataRowFromSchema(pDestTagSchema); + dataRow = tdNewDataRowFromSchema(pDestTagSchema); for (int i = 0; i < numOfTags; i++) { STColumn *pTCol = schemaColAt(pDestTagSchema, i); @@ -150,6 +152,8 @@ static int32_t vnodeProcessCreateTableMsg(SVnodeObj *pVnode, void *pCont, SRspRe } code = tsdbCreateTable(pVnode->tsdb, &tCfg); + tdFreeDataRow(dataRow); + tfree(pDestTagSchema); tfree(pDestSchema); dTrace("pVnode:%p vgId:%d, table:%s is created, result:%x", pVnode, pVnode->vgId, pTable->tableId, code); From 9ee563996d8377c8ad33aebef7a9754f32f386fb Mon Sep 17 00:00:00 2001 From: hzcheng Date: Mon, 4 May 2020 21:41:03 +0800 Subject: [PATCH 02/21] add uid to SCompIdx --- src/tsdb/inc/tsdbMain.h | 5 +++-- src/tsdb/src/tsdbRWHelper.c | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 39808ab02f..22d0691416 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -261,11 +261,12 @@ SFileGroup *tsdbGetFileGroupNext(SFileGroupIter *pIter); typedef struct { int32_t len; int32_t offset; + int32_t padding; // For padding purpose int32_t hasLast : 1; int32_t numOfBlocks : 31; - int32_t checksum; + int64_t uid; TSKEY maxKey; -} SCompIdx; /* sizeof(SCompIdx) = 24 */ +} SCompIdx; /* sizeof(SCompIdx) = 28 */ /** * if numOfSubBlocks == 0, then the SCompBlock is a sub-block diff --git a/src/tsdb/src/tsdbRWHelper.c b/src/tsdb/src/tsdbRWHelper.c index 653379e03b..e32a646296 100644 --- a/src/tsdb/src/tsdbRWHelper.c +++ b/src/tsdb/src/tsdbRWHelper.c @@ -414,6 +414,7 @@ int tsdbWriteCompInfo(SRWHelper *pHelper) { ASSERT((pIdx->len - sizeof(SCompInfo) - sizeof(TSCKSUM)) % sizeof(SCompBlock) == 0); taosCalcChecksumAppend(0, (uint8_t *)pHelper->pCompInfo, pIdx->len); pIdx->offset = lseek(pHelper->files.nHeadF.fd, 0, SEEK_END); + pIdx->uid = pHelper->tableInfo.uid; if (pIdx->offset < 0) return -1; ASSERT(pIdx->offset >= tsizeof(pHelper->pCompIdx)); From 0cbc8e6e8592a7f08b6fc4c6266e3c3644e5846f Mon Sep 17 00:00:00 2001 From: hzcheng Date: Tue, 5 May 2020 17:18:28 +0800 Subject: [PATCH 03/21] add retention policy --- src/inc/taoserror.h | 1 + src/tsdb/inc/tsdbMain.h | 7 +++-- src/tsdb/src/tsdbFile.c | 69 +++++++++++++++++------------------------ src/tsdb/src/tsdbMain.c | 33 +++++++++++++++----- src/util/inc/ttime.h | 21 +++++++++++-- src/util/src/ttime.c | 24 -------------- 6 files changed, 77 insertions(+), 78 deletions(-) diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index c9071f4cb0..98355a8672 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -115,6 +115,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_QUERY_ID, 0, 255, "invalid query i TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_STREAM_ID, 0, 256, "invalid stream id") TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONNECTION, 0, 257, "invalid connection") TAOS_DEFINE_ERROR(TSDB_CODE_SDB_ERROR, 0, 258, "sdb error") +TAOS_DEFINE_ERROR(TSDB_CODE_TIMESTAMP_OUT_OF_RANGE, 0, 259, "timestamp is out of range") // acct TAOS_DEFINE_ERROR(TSDB_CODE_ACCT_ALREADY_EXIST, 0, 300, "accounts already exist") diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 39808ab02f..e21a35a42f 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -227,13 +227,13 @@ typedef struct { int maxFGroups; int numOfFGroups; - SFileGroup fGroup[]; + SFileGroup *fGroup; } STsdbFileH; #define TSDB_MIN_FILE_ID(fh) (fh)->fGroup[0].fileId #define TSDB_MAX_FILE_ID(fh) (fh)->fGroup[(fh)->numOfFGroups - 1].fileId -STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles); +STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg); void tsdbCloseFileH(STsdbFileH *pFileH); int tsdbCreateFile(char *dataDir, int fileId, const char *suffix, int maxTables, SFile *pFile, int writeHeader, int toClose); @@ -485,6 +485,9 @@ int tsdbMoveLastBlockIfNeccessary(SRWHelper *pHelper); int tsdbWriteCompInfo(SRWHelper *pHelper); int tsdbWriteCompIdx(SRWHelper *pHelper); +// --------- Other functions need to further organize +void tsdbFitRetention(STsdbRepo *pRepo); + #ifdef __cplusplus } #endif diff --git a/src/tsdb/src/tsdbFile.c b/src/tsdb/src/tsdbFile.c index ab76f69bed..51bdda79e6 100644 --- a/src/tsdb/src/tsdbFile.c +++ b/src/tsdb/src/tsdbFile.c @@ -27,6 +27,7 @@ #include "tchecksum.h" #include "tsdbMain.h" #include "tutil.h" +#include "ttime.h" const char *tsdbFileSuffix[] = { ".head", // TSDB_FILE_TYPE_HEAD @@ -40,13 +41,19 @@ static int tsdbWriteFileHead(SFile *pFile); static int tsdbWriteHeadFileIdx(SFile *pFile, int maxTables); static int tsdbOpenFGroup(STsdbFileH *pFileH, char *dataDir, int fid); -STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { - STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH) + sizeof(SFileGroup) * maxFiles); +STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) { + STsdbFileH *pFileH = (STsdbFileH *)calloc(1, sizeof(STsdbFileH)); if (pFileH == NULL) { // TODO: deal with ERROR here return NULL; } - pFileH->maxFGroups = maxFiles; + pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 2; + + pFileH->fGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup)); + if (pFileH->fGroup == NULL) { + free(pFileH); + return NULL; + } DIR *dir = opendir(dataDir); if (dir == NULL) { @@ -69,7 +76,12 @@ STsdbFileH *tsdbInitFileH(char *dataDir, int maxFiles) { return pFileH; } -void tsdbCloseFileH(STsdbFileH *pFileH) { free(pFileH); } +void tsdbCloseFileH(STsdbFileH *pFileH) { + if (pFileH) { + tfree(pFileH->fGroup); + free(pFileH); + } +} static int tsdbInitFile(char *dataDir, int fid, const char *suffix, SFile *pFile) { tsdbGetFileName(dataDir, fid, suffix, pFile->fname); @@ -161,6 +173,18 @@ void tsdbInitFileGroupIter(STsdbFileH *pFileH, SFileGroupIter *pIter, int direct } } +void tsdbFitRetention(STsdbRepo *pRepo) { + STsdbFileH *pFileH = pRepo->tsdbFileH; + SFileGroup *pGroup = pFileH->fGroup; + + int mfid = + tsdbGetKeyFileId(taosGetTimestamp(pRepo->config.precision), pRepo->config.daysPerFile, pRepo->config.precision); + + while (pGroup[0].fileId < mfid) { + tsdbRemoveFileGroup(pFileH, pGroup[0].fileId); + } +} + void tsdbSeekFileGroupIter(SFileGroupIter *pIter, int fid) { if (pIter->numOfFGroups == 0) { assert(pIter->pFileGroup == NULL); @@ -252,43 +276,6 @@ int tsdbCopyBlockDataInFile(SFile *pOutFile, SFile *pInFile, SCompInfo *pCompInf return 0; } -// int tsdbLoadCompIdx(SFileGroup *pGroup, void *buf, int maxTables) { -// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]); -// if (lseek(pFile->fd, TSDB_FILE_HEAD_SIZE, SEEK_SET) < 0) return -1; - -// if (read(pFile->fd, buf, sizeof(SCompIdx) * maxTables) < 0) return -1; -// // TODO: need to check the correctness -// return 0; -// } - -// int tsdbLoadCompBlocks(SFileGroup *pGroup, SCompIdx *pIdx, void *buf) { -// SFile *pFile = &(pGroup->files[TSDB_FILE_TYPE_HEAD]); - -// if (lseek(pFile->fd, pIdx->offset, SEEK_SET) < 0) return -1; - -// if (read(pFile->fd, buf, pIdx->len) < 0) return -1; - -// // TODO: need to check the correctness - -// return 0; -// } - -// int tsdbLoadCompCols(SFile *pFile, SCompBlock *pBlock, void *buf) { -// // assert(pBlock->numOfSubBlocks == 0 || pBlock->numOfSubBlocks == 1); - -// if (lseek(pFile->fd, pBlock->offset, SEEK_SET) < 0) return -1; -// size_t size = sizeof(SCompData) + sizeof(SCompCol) * pBlock->numOfCols; -// if (read(pFile->fd, buf, size) < 0) return -1; - -// return 0; -// } - -// int tsdbLoadColData(SFile *pFile, SCompCol *pCol, int64_t blockBaseOffset, void *buf) { -// if (lseek(pFile->fd, blockBaseOffset + pCol->offset, SEEK_SET) < 0) return -1; -// if (read(pFile->fd, buf, pCol->len) < 0) return -1; -// return 0; -// } - static int compFGroupKey(const void *key, const void *fgroup) { int fid = *(int *)key; SFileGroup *pFGroup = (SFileGroup *)fgroup; diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index b1ef3d2d9c..dd5dbd3f8d 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -6,6 +6,7 @@ #include "tsdbMain.h" #include "tscompression.h" #include "tchecksum.h" +#include "ttime.h" int tsdbDebugFlag = 135; @@ -27,7 +28,7 @@ static int32_t tsdbCheckAndSetDefaultCfg(STsdbCfg *pCfg); static int32_t tsdbSetRepoEnv(STsdbRepo *pRepo); static int32_t tsdbDestroyRepoEnv(STsdbRepo *pRepo); // static int tsdbOpenMetaFile(char *tsdbDir); -static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock); +static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now); static int32_t tsdbRestoreCfg(STsdbRepo *pRepo, STsdbCfg *pCfg); static int32_t tsdbGetDataDirName(STsdbRepo *pRepo, char *fname); static void * tsdbCommitData(void *arg); @@ -214,7 +215,7 @@ TsdbRepoT *tsdbOpenRepo(char *tsdbDir, STsdbAppH *pAppH) { } tsdbGetDataDirName(pRepo, dataDir); - pRepo->tsdbFileH = tsdbInitFileH(dataDir, pRepo->config.maxTables); + pRepo->tsdbFileH = tsdbInitFileH(dataDir, &(pRepo->config)); if (pRepo->tsdbFileH == NULL) { tsdbFreeCache(pRepo->tsdbCache); tsdbFreeMeta(pRepo->tsdbMeta); @@ -394,13 +395,16 @@ STableInfo *tsdbGetTableInfo(TsdbRepoT *pRepo, STableId tableId) { // TODO: need to return the number of data inserted int32_t tsdbInsertData(TsdbRepoT *repo, SSubmitMsg *pMsg) { SSubmitMsgIter msgIter; + STsdbRepo *pRepo = (STsdbRepo *)repo; tsdbInitSubmitMsgIter(pMsg, &msgIter); SSubmitBlk *pBlock = NULL; int32_t code = TSDB_CODE_SUCCESS; - + + TSKEY now = taosGetTimestamp(pRepo->config.precision); + while ((pBlock = tsdbGetSubmitMsgNext(&msgIter)) != NULL) { - if ((code = tsdbInsertDataToTable(repo, pBlock)) != TSDB_CODE_SUCCESS) { + if ((code = tsdbInsertDataToTable(repo, pBlock, now)) != TSDB_CODE_SUCCESS) { return code; } } @@ -787,21 +791,31 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable return 0; } -static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock) { +static int32_t tsdbInsertDataToTable(TsdbRepoT *repo, SSubmitBlk *pBlock, TSKEY now) { STsdbRepo *pRepo = (STsdbRepo *)repo; STableId tableId = {.uid = pBlock->uid, .tid = pBlock->tid}; STable *pTable = tsdbIsValidTableToInsert(pRepo->tsdbMeta, tableId); if (pTable == NULL) { - uError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid); + tsdbError("failed to get table for insert, uid:%" PRIu64 ", tid:%d", tableId.uid, tableId.tid); return TSDB_CODE_INVALID_TABLE_ID; } - SSubmitBlkIter blkIter; - SDataRow row; + SSubmitBlkIter blkIter = {0}; + SDataRow row = NULL; + + TSKEY minKey = now - tsMsPerDay[pRepo->config.precision] * pRepo->config.keep; + TSKEY maxKey = now + tsMsPerDay[pRepo->config.precision] * pRepo->config.daysPerFile; tsdbInitSubmitBlkIter(pBlock, &blkIter); while ((row = tsdbGetSubmitBlkNext(&blkIter)) != NULL) { + if (dataRowKey(row) < minKey || dataRowKey(row) > maxKey) { + tsdbError( + "tsdbId: %d, table tid: %d, talbe uid: %ld timestamp is out of range. now: %ld maxKey: %ld, minKey: %ld", + pRepo->config.tsdbId, pTable->tableId.tid, pTable->tableId.uid, now, minKey, maxKey); + return TSDB_CODE_TIMESTAMP_OUT_OF_RANGE; + } + if (tdInsertRowToTable(pRepo, row, pTable) < 0) { return -1; } @@ -903,6 +917,9 @@ static void *tsdbCommitData(void *arg) { } } + // Do retention actions + tsdbFitRetention(pRepo); + _exit: tdFreeDataCols(pDataCols); tsdbDestroyTableIters(iters, pCfg->maxTables); diff --git a/src/util/inc/ttime.h b/src/util/inc/ttime.h index 34c241cbc0..61df65f345 100644 --- a/src/util/inc/ttime.h +++ b/src/util/inc/ttime.h @@ -22,22 +22,37 @@ extern "C" { #include #include +#include "tutil.h" //@return timestamp in second int32_t taosGetTimestampSec(); //@return timestamp in millisecond -int64_t taosGetTimestampMs(); +static FORCE_INLINE int64_t taosGetTimestampMs() { + struct timeval systemTime; + gettimeofday(&systemTime, NULL); + return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000; +} //@return timestamp in microsecond -int64_t taosGetTimestampUs(); +static FORCE_INLINE int64_t taosGetTimestampUs() { + struct timeval systemTime; + gettimeofday(&systemTime, NULL); + return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec; +} /* * @return timestamp decided by global conf variable, tsTimePrecision * if precision == TSDB_TIME_PRECISION_MICRO, it returns timestamp in microsecond. * precision == TSDB_TIME_PRECISION_MILLI, it returns timestamp in millisecond. */ -int64_t taosGetTimestamp(int32_t precision); +static FORCE_INLINE int64_t taosGetTimestamp(int32_t precision) { + if (precision == TSDB_TIME_PRECISION_MICRO) { + return taosGetTimestampUs(); + } else { + return taosGetTimestampMs(); + } +} int32_t getTimestampInUsFromStr(char* token, int32_t tokenlen, int64_t* ts); diff --git a/src/util/src/ttime.c b/src/util/src/ttime.c index 015cb19606..d34bf0e6ce 100644 --- a/src/util/src/ttime.c +++ b/src/util/src/ttime.c @@ -121,30 +121,6 @@ static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec); int32_t taosGetTimestampSec() { return (int32_t)time(NULL); } -int64_t taosGetTimestampMs() { - struct timeval systemTime; - gettimeofday(&systemTime, NULL); - return (int64_t)systemTime.tv_sec * 1000L + (uint64_t)systemTime.tv_usec / 1000; -} - -int64_t taosGetTimestampUs() { - struct timeval systemTime; - gettimeofday(&systemTime, NULL); - return (int64_t)systemTime.tv_sec * 1000000L + (uint64_t)systemTime.tv_usec; -} - -/* - * If tsTimePrecision == 1, taosGetTimestamp will return timestamp in microsecond. - * Otherwise, it will return timestamp in millisecond. - */ -int64_t taosGetTimestamp(int32_t precision) { - if (precision == TSDB_TIME_PRECISION_MICRO) { - return taosGetTimestampUs(); - } else { - return taosGetTimestampMs(); - } -} - int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec) { /* parse datatime string in with tz */ if (strnchr(timestr, 'T', len, false) != NULL) { From e2a9b1c28dfaaa449078f1b9236988e43fdd559c Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 5 May 2020 18:40:13 +0800 Subject: [PATCH 04/21] fix binary.py and util/sql.py to support binary test [TD-167] --- tests/pytest/insert/binary.py | 12 ++++++------ tests/pytest/util/sql.py | 3 +++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/pytest/insert/binary.py b/tests/pytest/insert/binary.py index 9989865f96..53041b1ce7 100644 --- a/tests/pytest/insert/binary.py +++ b/tests/pytest/insert/binary.py @@ -27,8 +27,8 @@ class TDTestCase: tdSql.query('select speed from tb order by ts desc') tdLog.info('tdSql.checkRow(1)') tdSql.checkRows(1) - tdLog.info('tdSql.checkData(0, 0, 1234)') - tdSql.checkData(0, 0, 1234) + tdLog.info("tdSql.checkData(0, 0, '1234')") + tdSql.checkData(0, 0, '1234') tdLog.info('=============== step3') tdLog.info("insert into tb values (now+2a, '23456')") tdSql.execute("insert into tb values (now+2a, '23456')") @@ -37,8 +37,8 @@ class TDTestCase: tdLog.info('tdSql.checkRow(2)') tdSql.checkRows(2) tdLog.info('==> $data00') - tdLog.info('tdSql.checkData(0, 0, 23456)') - tdSql.checkData(0, 0, 23456) + tdLog.info("tdSql.checkData(0, 0, '23456')") +# tdSql.checkData(0, 0, '23456') tdLog.info('=============== step4') tdLog.info("insert into tb values (now+3a, '345678')") tdSql.error("insert into tb values (now+3a, '345678')") @@ -49,8 +49,8 @@ class TDTestCase: tdLog.info('tdSql.checkRow(3)') tdSql.checkRows(3) tdLog.info('==> $data00') - tdLog.info('tdSql.checkData(0, 0, 34567)') - tdSql.checkData(0, 0, 34567) + tdLog.info("tdSql.checkData(0, 0, '34567')") + tdSql.checkData(0, 0, '34567') tdLog.info('drop database db') tdSql.execute('drop database db') tdLog.info('show databases') diff --git a/tests/pytest/util/sql.py b/tests/pytest/util/sql.py index a1f7dd2f64..0e7e186206 100644 --- a/tests/pytest/util/sql.py +++ b/tests/pytest/util/sql.py @@ -93,6 +93,9 @@ class TDSql: if data is None: tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % (self.sql, row, col, self.queryResult[row][col], data)) + elif isinstance(data, str): + tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % + (self.sql, row, col, self.queryResult[row][col], data)) elif isinstance(data, datetime.date): tdLog.info("sql:%.40s, row:%d col:%d data:%s == expect:%s" % (self.sql, row, col, self.queryResult[row][col], data)) From 638f7b4afbbda16ec6323f51500d7a233a3ed864 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 5 May 2020 18:45:05 +0800 Subject: [PATCH 05/21] fixup. --- tests/pytest/insert/binary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pytest/insert/binary.py b/tests/pytest/insert/binary.py index 53041b1ce7..e254fb1438 100644 --- a/tests/pytest/insert/binary.py +++ b/tests/pytest/insert/binary.py @@ -38,7 +38,7 @@ class TDTestCase: tdSql.checkRows(2) tdLog.info('==> $data00') tdLog.info("tdSql.checkData(0, 0, '23456')") -# tdSql.checkData(0, 0, '23456') + tdSql.checkData(0, 0, '23456') tdLog.info('=============== step4') tdLog.info("insert into tb values (now+3a, '345678')") tdSql.error("insert into tb values (now+3a, '345678')") From bf06466cf211878d9a0bc1f4ee8b086e62dee291 Mon Sep 17 00:00:00 2001 From: hzcheng Date: Tue, 5 May 2020 22:01:56 +0800 Subject: [PATCH 06/21] add change repository compression options --- src/inc/taoserror.h | 3 ++ src/tsdb/inc/tsdbMain.h | 3 ++ src/tsdb/src/tsdbCache.c | 75 ++++++++++++++++++++++++++++++++++++---- src/tsdb/src/tsdbFile.c | 2 +- src/tsdb/src/tsdbMain.c | 48 ++++++++++++++++++++++--- 5 files changed, 118 insertions(+), 13 deletions(-) diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index 98355a8672..b5ab4412a9 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -173,6 +173,9 @@ TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_VALUE, 0, 462, "invalid value") // others TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_FILE_FORMAT, 0, 500, "invalid file format") +// TSDB +TAOS_DEFINE_ERROR(TSDB_CODE_INVALID_CONFIG, 0, 550, "invalid TSDB configuration") + #ifdef TAOS_ERROR_C }; diff --git a/src/tsdb/inc/tsdbMain.h b/src/tsdb/inc/tsdbMain.h index 89708a5553..e056a10bba 100644 --- a/src/tsdb/inc/tsdbMain.h +++ b/src/tsdb/inc/tsdbMain.h @@ -160,6 +160,7 @@ typedef struct { typedef struct { int64_t index; + int numOfCacheBlocks; SList * memPool; } STsdbCachePool; @@ -488,6 +489,8 @@ int tsdbWriteCompIdx(SRWHelper *pHelper); // --------- Other functions need to further organize void tsdbFitRetention(STsdbRepo *pRepo); +int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks); +void tsdbAdjustCacheBlocks(STsdbCache *pCache); #ifdef __cplusplus } diff --git a/src/tsdb/src/tsdbCache.c b/src/tsdb/src/tsdbCache.c index 9351bc602b..84f8a81eea 100644 --- a/src/tsdb/src/tsdbCache.c +++ b/src/tsdb/src/tsdbCache.c @@ -20,6 +20,7 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache); static void tsdbFreeBlockList(SList *list); static void tsdbFreeCacheMem(SCacheMem *mem); +static int tsdbAddCacheBlockToPool(STsdbCache *pCache); STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) { STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache)); @@ -40,13 +41,7 @@ STsdbCache *tsdbInitCache(int cacheBlockSize, int totalBlocks, TsdbRepoT *pRepo) if (pPool->memPool == NULL) goto _err; for (int i = 0; i < totalBlocks; i++) { - STsdbCacheBlock *pBlock = (STsdbCacheBlock *)malloc(sizeof(STsdbCacheBlock) + cacheBlockSize); - if (pBlock == NULL) { - goto _err; - } - pBlock->offset = 0; - pBlock->remain = cacheBlockSize; - tdListAppend(pPool->memPool, (void *)(&pBlock)); + if (tsdbAddCacheBlockToPool(pCache) < 0) goto _err; } pCache->mem = NULL; @@ -142,4 +137,70 @@ static int tsdbAllocBlockFromPool(STsdbCache *pCache) { tsdbUnLockRepo(pCache->pRepo); return 0; +} + +int tsdbAlterCacheTotalBlocks(STsdbRepo *pRepo, int totalBlocks) { + STsdbCache *pCache = pRepo->tsdbCache; + int oldNumOfBlocks = pCache->totalCacheBlocks; + + tsdbLockRepo((TsdbRepoT *)pRepo); + + ASSERT(pCache->totalCacheBlocks != totalBlocks); + + if (pCache->totalCacheBlocks < totalBlocks) { + ASSERT(pCache->totalCacheBlocks == pCache->pool.numOfCacheBlocks); + int blocksToAdd = pCache->totalCacheBlocks - totalBlocks; + pCache->totalCacheBlocks = totalBlocks; + for (int i = 0; i < blocksToAdd; i++) { + if (tsdbAddCacheBlockToPool(pCache) < 0) { + tsdbUnLockRepo((TsdbRepoT *)pRepo); + tsdbError("tsdbId %d: failed to add cache block to cache pool", pRepo->config.tsdbId); + return -1; + } + } + } else { + pCache->totalCacheBlocks = totalBlocks; + tsdbAdjustCacheBlocks(pCache); + } + + tsdbUnLockRepo((TsdbRepoT *)pRepo); + tsdbTrace("tsdbId %d: tsdb total cache blocks changed from %d to %d", pRepo->config.tsdbId, oldNumOfBlocks, totalBlocks); + return 0; +} + +static int tsdbAddCacheBlockToPool(STsdbCache *pCache) { + STsdbCachePool *pPool = &pCache->pool; + + STsdbCacheBlock *pBlock = malloc(sizeof(STsdbCacheBlock) + pCache->cacheBlockSize); + if (pBlock == NULL) return -1; + + pBlock->offset = 0; + pBlock->remain = pCache->cacheBlockSize; + tdListAppend(pPool->memPool, (void *)(&pBlock)); + pPool->numOfCacheBlocks++; + + return 0; +} + +static int tsdbRemoveCacheBlockFromPool(STsdbCache *pCache) { + STsdbCachePool *pPool = &pCache->pool; + STsdbCacheBlock *pBlock = NULL; + + ASSERT(pCache->totalCacheBlocks >= 0); + + SListNode *node = tdListPopHead(pPool->memPool); + if (node == NULL) return -1; + + tdListNodeGetData(pPool->memPool, node, &pBlock); + free(pBlock); + listNodeFree(node); + pPool->numOfCacheBlocks--; + + return 0; +} + +void tsdbAdjustCacheBlocks(STsdbCache *pCache) { + while (pCache->totalCacheBlocks < pCache->pool.numOfCacheBlocks) { + if (tsdbRemoveCacheBlockFromPool(pCache) < 0) break; + } } \ No newline at end of file diff --git a/src/tsdb/src/tsdbFile.c b/src/tsdb/src/tsdbFile.c index 51bdda79e6..0c1b9e314e 100644 --- a/src/tsdb/src/tsdbFile.c +++ b/src/tsdb/src/tsdbFile.c @@ -47,7 +47,7 @@ STsdbFileH *tsdbInitFileH(char *dataDir, STsdbCfg *pCfg) { return NULL; } - pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 2; + pFileH->maxFGroups = pCfg->keep / pCfg->daysPerFile + 3; pFileH->fGroup = (SFileGroup *)calloc(pFileH->maxFGroups, sizeof(SFileGroup)); if (pFileH->fGroup == NULL) { diff --git a/src/tsdb/src/tsdbMain.c b/src/tsdb/src/tsdbMain.c index dd5dbd3f8d..3f41a3c5fe 100644 --- a/src/tsdb/src/tsdbMain.c +++ b/src/tsdb/src/tsdbMain.c @@ -36,8 +36,9 @@ static int tsdbCommitToFile(STsdbRepo *pRepo, int fid, SSkipListIterator **i SDataCols *pDataCols); static TSKEY tsdbNextIterKey(SSkipListIterator *pIter); static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minKey, TSKEY maxKey); -// static int tsdbWriteBlockToFileImpl(SFile *pFile, SDataCols *pCols, int pointsToWrite, int64_t *offset, int32_t *len, -// int64_t uid); +static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression); +static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep); +static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables); #define TSDB_GET_TABLE_BY_ID(pRepo, sid) (((STSDBRepo *)pRepo)->pTableList)[sid] #define TSDB_GET_TABLE_BY_NAME(pRepo, name) @@ -298,10 +299,23 @@ int32_t tsdbCloseRepo(TsdbRepoT *repo) { */ int32_t tsdbConfigRepo(TsdbRepoT *repo, STsdbCfg *pCfg) { STsdbRepo *pRepo = (STsdbRepo *)repo; + STsdbCfg * pRCfg = &pRepo->config; - pRepo->config = *pCfg; - // TODO - return 0; + if (tsdbCheckAndSetDefaultCfg(pCfg) < 0) return TSDB_CODE_INVALID_CONFIG; + + ASSERT(pRCfg->tsdbId == pCfg->tsdbId); + ASSERT(pRCfg->cacheBlockSize == pCfg->cacheBlockSize); + ASSERT(pRCfg->daysPerFile == pCfg->daysPerFile); + ASSERT(pRCfg->minRowsPerFileBlock == pCfg->minRowsPerFileBlock); + ASSERT(pRCfg->maxRowsPerFileBlock == pCfg->maxRowsPerFileBlock); + ASSERT(pRCfg->precision == pCfg->precision); + + if (pRCfg->compression != pCfg->compression) tsdbAlterCompression(pRepo, pCfg->compression); + if (pRCfg->keep != pCfg->keep) tsdbAlterKeep(pRepo, pCfg->keep); + if (pRCfg->totalBlocks != pCfg->totalBlocks) tsdbAlterCacheTotalBlocks(pRepo, pCfg->totalBlocks); + if (pRCfg->maxTables != pCfg->maxTables) tsdbAlterMaxTables(pRepo, pCfg->maxTables); + + return TSDB_CODE_SUCCESS; } int32_t tsdbTriggerCommit(TsdbRepoT *repo) { @@ -927,6 +941,7 @@ _exit: tsdbLockRepo(arg); tdListMove(pCache->imem->list, pCache->pool.memPool); + tsdbAdjustCacheBlocks(pCache); tdListFree(pCache->imem->list); free(pCache->imem); pCache->imem = NULL; @@ -1045,4 +1060,27 @@ static int tsdbHasDataToCommit(SSkipListIterator **iters, int nIters, TSKEY minK if (nextKey > 0 && (nextKey >= minKey && nextKey <= maxKey)) return 1; } return 0; +} + +static void tsdbAlterCompression(STsdbRepo *pRepo, int8_t compression) { + pRepo->config.compression = compression; +} + +static void tsdbAlterKeep(STsdbRepo *pRepo, int32_t keep) { + STsdbCfg *pCfg = &pRepo->config; + + int maxFiles = keep / pCfg->maxTables + 3; + if (pRepo->config.keep > keep) { + pRepo->tsdbFileH->maxFGroups = maxFiles; + } else { + pRepo->tsdbFileH->fGroup = realloc(pRepo->tsdbFileH->fGroup, sizeof(SFileGroup)); + if (pRepo->tsdbFileH->fGroup == NULL) { + // TODO: deal with the error + } + pRepo->tsdbFileH->maxFGroups = maxFiles; + } +} + +static void tsdbAlterMaxTables(STsdbRepo *pRepo, int32_t maxTables) { + // TODO } \ No newline at end of file From d8f1671f3bedfbdbe7331f23f1e210fc597a8f45 Mon Sep 17 00:00:00 2001 From: slguan Date: Tue, 5 May 2020 22:20:08 +0800 Subject: [PATCH 07/21] change wal path --- src/mnode/src/mgmtSdb.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mgmtSdb.c index 3717277992..51f8984b48 100644 --- a/src/mnode/src/mgmtSdb.c +++ b/src/mnode/src/mgmtSdb.c @@ -143,7 +143,9 @@ static void *sdbGetTableFromId(int32_t tableId) { static int32_t sdbInitWal() { SWalCfg walCfg = {.commitLog = 2, .wals = 2, .keep = 1}; - tsSdbObj.wal = walOpen(tsMnodeDir, &walCfg); + char temp[TSDB_FILENAME_LEN]; + sprintf(temp, "%s/wal", tsMnodeDir); + tsSdbObj.wal = walOpen(temp, &walCfg); if (tsSdbObj.wal == NULL) { sdbError("failed to open sdb wal in %s", tsMnodeDir); return -1; @@ -195,10 +197,12 @@ static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32 return 0; } +#if 0 static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) { strcpy(name, "wal0"); return 0; } +#endif static void sdbNotifyRole(void *ahandle, int8_t role) { sdbPrint("mnode role changed from %s to %s", mgmtGetMnodeRoleStr(tsSdbObj.role), mgmtGetMnodeRoleStr(role)); @@ -281,9 +285,9 @@ void sdbUpdateSync() { syncInfo.vgId = 1; syncInfo.version = sdbGetVersion(); syncInfo.syncCfg = syncCfg; - sprintf(syncInfo.path, "%s/", tsMnodeDir); - syncInfo.ahandle = NULL; - syncInfo.getWalInfo = sdbGetWalInfo; + sprintf(syncInfo.path, "%s", tsMnodeDir); + syncInfo.ahandle = tsSdbObj.wal; + syncInfo.getWalInfo = walGetWalFile; syncInfo.getFileInfo = sdbGetFileInfo; syncInfo.writeToCache = sdbWrite; syncInfo.confirmForward = sdbConfirmForward; From 54a704a467e8e0ef17e42b7f523c42b6503c8616 Mon Sep 17 00:00:00 2001 From: slguan Date: Tue, 5 May 2020 22:28:33 +0800 Subject: [PATCH 08/21] a small change --- src/mnode/src/mgmtSdb.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/mnode/src/mgmtSdb.c b/src/mnode/src/mgmtSdb.c index 51f8984b48..a55869222d 100644 --- a/src/mnode/src/mgmtSdb.c +++ b/src/mnode/src/mgmtSdb.c @@ -197,12 +197,9 @@ static uint32_t sdbGetFileInfo(void *ahandle, char *name, uint32_t *index, int32 return 0; } -#if 0 static int sdbGetWalInfo(void *ahandle, char *name, uint32_t *index) { - strcpy(name, "wal0"); - return 0; + return walGetWalFile(tsSdbObj.wal, name, index); } -#endif static void sdbNotifyRole(void *ahandle, int8_t role) { sdbPrint("mnode role changed from %s to %s", mgmtGetMnodeRoleStr(tsSdbObj.role), mgmtGetMnodeRoleStr(role)); @@ -286,8 +283,8 @@ void sdbUpdateSync() { syncInfo.version = sdbGetVersion(); syncInfo.syncCfg = syncCfg; sprintf(syncInfo.path, "%s", tsMnodeDir); - syncInfo.ahandle = tsSdbObj.wal; - syncInfo.getWalInfo = walGetWalFile; + syncInfo.ahandle = NULL; + syncInfo.getWalInfo = sdbGetWalInfo; syncInfo.getFileInfo = sdbGetFileInfo; syncInfo.writeToCache = sdbWrite; syncInfo.confirmForward = sdbConfirmForward; From aa296b8ca63e38cb7d687d36d0cc943404b408cc Mon Sep 17 00:00:00 2001 From: slguan Date: Wed, 6 May 2020 15:15:24 +0800 Subject: [PATCH 09/21] #1811 --- src/client/src/tscSql.c | 7 +++++++ src/kit/shell/inc/shell.h | 1 + src/kit/shell/src/shellDarwin.c | 2 +- src/kit/shell/src/shellEngine.c | 2 +- src/kit/shell/src/shellLinux.c | 2 +- src/kit/shell/src/shellWindows.c | 2 +- 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 87247d874b..afac69350c 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -168,6 +168,13 @@ static void syncConnCallback(void *param, TAOS_RES *tres, int code) { TAOS *taos_connect(const char *ip, const char *user, const char *pass, const char *db, uint16_t port) { tscTrace("try to create a connection to %s", ip); + if (port != 0) { + tsServerPort = port; + tsMnodeShellPort = tsServerPort + TSDB_PORT_MNODESHELL; + tsDnodeShellPort = tsServerPort + TSDB_PORT_DNODESHELL; + tsMnodeDnodePort = tsServerPort + TSDB_PORT_MNODEDNODE; + tsDnodeMnodePort = tsServerPort + TSDB_PORT_DNODEMNODE; + } STscObj *pObj = taosConnectImpl(ip, user, pass, db, port, NULL, NULL, NULL); if (pObj != NULL) { diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h index 7abe8a5776..381c6f1dbf 100644 --- a/src/kit/shell/inc/shell.h +++ b/src/kit/shell/inc/shell.h @@ -61,6 +61,7 @@ struct arguments { int threadNum; char* commands; int abort; + int port; }; /**************** Function declarations ****************/ diff --git a/src/kit/shell/src/shellDarwin.c b/src/kit/shell/src/shellDarwin.c index 13513426cd..cd2fe6df33 100644 --- a/src/kit/shell/src/shellDarwin.c +++ b/src/kit/shell/src/shellDarwin.c @@ -81,7 +81,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { // for management port else if (strcmp(argv[i], "-P") == 0) { if (i < argc - 1) { - tsMnodeShellPort = atoi(argv[++i]); + arguments->port = atoi(argv[++i]); } else { fprintf(stderr, "option -P requires an argument\n"); exit(EXIT_FAILURE); diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index f9ea5f4777..152397c044 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -68,7 +68,7 @@ TAOS *shellInit(struct arguments *args) { tsMeterMetaKeepTimer = 3000; // Connect to the database. - TAOS *con = taos_connect(args->host, args->user, args->password, args->database, tsMnodeShellPort); + TAOS *con = taos_connect(args->host, args->user, args->password, args->database, args->port); if (con == NULL) { return con; } diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index 22ffa78c81..0d9458e00c 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -63,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { break; case 'P': if (arg) { - tsMnodeShellPort = atoi(arg); + arguments->port = atoi(arg); } else { fprintf(stderr, "Invalid port\n"); return -1; diff --git a/src/kit/shell/src/shellWindows.c b/src/kit/shell/src/shellWindows.c index 8863f4fa46..ac04c593fb 100644 --- a/src/kit/shell/src/shellWindows.c +++ b/src/kit/shell/src/shellWindows.c @@ -61,7 +61,7 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { // for management port else if (strcmp(argv[i], "-P") == 0) { if (i < argc - 1) { - tsMnodeShellPort = atoi(argv[++i]); + arguments->port = atoi(argv[++i]); } else { fprintf(stderr, "option -P requires an argument\n"); exit(EXIT_FAILURE); From c6a90d6afd82b820ae01cd42fbab866998e1ab0f Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Wed, 6 May 2020 15:20:47 +0800 Subject: [PATCH 10/21] enhance memory leak check in ci. --- .travis.yml | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 37e6e5a6c3..f9a27fdabd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,17 +59,30 @@ matrix: GREEN_UNDERLINE='\033[4;32m' NC='\033[0m' - tail -10 mem-error-out.txt - defiMemError=`grep -m 1 'definitely lost' mem-error-out.txt | awk '{print $7}'` - memError=`grep -m 1 'ERROR SUMMARY' mem-error-out.txt | awk '{print $4}'` + grep 'ERROR SUMMARY' mem-error-out.txt | uniq | tee uniq-mem-error-out.txt - if [ -n "$memError" ]; then - if [ "$memError" -gt 16 ] || [ "$defiMemError" -gt 0 ]; then - echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ - Definitely lost is $defiMemError. More than our threshold! ## ${NC}" - travis_terminate $memError + for memError in `cat uniq-mem-error-out.txt | awk '{print $4}'` + do + if [ -n "$memError" ]; then + if [ "$memError" -gt 16 ]; then + echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ + More than our threshold! ## ${NC}" + travis_terminate $memError + fi fi - fi + done + + grep 'definitely lost' mem-error-out.txt | uniq | tee uniq-definitely-lost-out.txt + for defiMemError in `cat uniq-definitely-lost-out.txt | awk '{print $7}'` + do + if [ -n "$defiMemError" ]; then + if [ "$defiMemError" -gt 16 ]; then + echo -e "${RED} ## Memory errors number valgrind reports \ + Definitely lost is $defiMemError. More than our threshold! ## ${NC}" + travis_terminate $defiMemError + fi + fi + done ;; esac From 19836961ced1c60f7184384a9bcc4c83e653f8cf Mon Sep 17 00:00:00 2001 From: jtao1735 Date: Wed, 6 May 2020 10:03:41 +0000 Subject: [PATCH 11/21] use semphore instead of polling for tqeueu --- src/dnode/src/dnodeRead.c | 8 +++++--- src/dnode/src/dnodeWrite.c | 3 +++ src/rpc/src/rpcMain.c | 2 +- src/util/src/tqueue.c | 14 ++++++++++++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/dnode/src/dnodeRead.c b/src/dnode/src/dnodeRead.c index e52b59d20a..efa5dc7695 100644 --- a/src/dnode/src/dnodeRead.c +++ b/src/dnode/src/dnodeRead.c @@ -74,8 +74,10 @@ void dnodeCleanupRead() { for (int i=0; i < readPool.max; ++i) { SReadWorker *pWorker = readPool.readWorker + i; - if (pWorker->thread) + if (pWorker->thread) { + pthread_cancel(pWorker->thread); pthread_join(pWorker->thread, NULL); + } } taosCloseQset(readQset); @@ -114,12 +116,12 @@ void dnodeRead(SRpcMsg *pMsg) { pRead->pCont = pCont; pRead->contLen = pHead->contLen; - taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); - // next vnode leftLen -= pHead->contLen; pCont -= pHead->contLen; queuedMsgNum++; + + taosWriteQitem(queue, TAOS_QTYPE_RPC, pRead); } if (queuedMsgNum == 0) { diff --git a/src/dnode/src/dnodeWrite.c b/src/dnode/src/dnodeWrite.c index 39757c690f..4ca9b1935d 100644 --- a/src/dnode/src/dnodeWrite.c +++ b/src/dnode/src/dnodeWrite.c @@ -71,7 +71,10 @@ void dnodeCleanupWrite() { for (int32_t i = 0; i < wWorkerPool.max; ++i) { SWriteWorker *pWorker = wWorkerPool.writeWorker + i; if (pWorker->thread) { + pthread_cancel(pWorker->thread); pthread_join(pWorker->thread, NULL); + taosFreeQall(pWorker->qall); + taosCloseQset(pWorker->qset); } } diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index d463bc3d95..3e4e05cd11 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -1364,7 +1364,7 @@ static int rpcCheckAuthentication(SRpcConn *pConn, char *msg, int msgLen) { } } } else { - tTrace("%s %p, auth spi not matched, msg discarded", pRpc->label, pConn); + tTrace("%s %p, auth spi:%d not matched with received:%d", pRpc->label, pConn, pConn->spi, pHead->spi); code = TSDB_CODE_AUTH_FAILURE; } diff --git a/src/util/src/tqueue.c b/src/util/src/tqueue.c index c639452823..a458cefc9c 100644 --- a/src/util/src/tqueue.c +++ b/src/util/src/tqueue.c @@ -41,6 +41,7 @@ typedef struct _taos_qset { pthread_mutex_t mutex; int32_t numOfQueues; int32_t numOfItems; + tsem_t sem; } STaosQset; typedef struct _taos_qall { @@ -59,6 +60,7 @@ taos_queue taosOpenQueue() { } pthread_mutex_init(&queue->mutex, NULL); + return queue; } @@ -79,7 +81,7 @@ void taosCloseQueue(taos_queue param) { } pthread_mutex_unlock(&queue->mutex); - + pthread_mutex_destroy(&queue->mutex); free(queue); } @@ -116,11 +118,12 @@ int taosWriteQitem(taos_queue param, int type, void *item) { queue->numOfItems++; if (queue->qset) atomic_add_fetch_32(&queue->qset->numOfItems, 1); - uTrace("item:%p is put into queue:%p, type:%d items:%d", item, queue, type, queue->numOfItems); pthread_mutex_unlock(&queue->mutex); + if (queue->qset) tsem_post(&queue->qset->sem); + return 0; } @@ -217,12 +220,15 @@ taos_qset taosOpenQset() { } pthread_mutex_init(&qset->mutex, NULL); + tsem_init(&qset->sem, 0, 0); return qset; } void taosCloseQset(taos_qset param) { STaosQset *qset = (STaosQset *)param; + pthread_mutex_destroy(&qset->mutex); + tsem_destroy(&qset->sem); free(qset); } @@ -298,6 +304,8 @@ int taosReadQitemFromQset(taos_qset param, int *type, void **pitem, void **phand STaosQnode *pNode = NULL; int code = 0; + tsem_wait(&qset->sem); + pthread_mutex_lock(&qset->mutex); for(int i=0; inumOfQueues; ++i) { @@ -339,6 +347,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { STaosQall *qall = (STaosQall *)p2; int code = 0; + tsem_wait(&qset->sem); pthread_mutex_lock(&qset->mutex); for(int i=0; inumOfQueues; ++i) { @@ -364,6 +373,7 @@ int taosReadAllQitemsFromQset(taos_qset param, taos_qall p2, void **phandle) { queue->tail = NULL; queue->numOfItems = 0; atomic_sub_fetch_32(&qset->numOfItems, qall->numOfItems); + for (int j=1; jnumOfItems; ++j) tsem_wait(&qset->sem); } pthread_mutex_unlock(&queue->mutex); From 9d05238c7beb184379136493022a3b2862965bac Mon Sep 17 00:00:00 2001 From: localvar Date: Wed, 6 May 2020 18:52:53 +0800 Subject: [PATCH 12/21] define msg code and description together --- src/common/src/tmessage.c | 120 +----------------------------- src/inc/taosmsg.h | 151 ++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 207 deletions(-) diff --git a/src/common/src/tmessage.c b/src/common/src/tmessage.c index 5a134df129..0b6dbfdb51 100644 --- a/src/common/src/tmessage.c +++ b/src/common/src/tmessage.c @@ -13,122 +13,6 @@ * along with this program. If not, see . */ -char *taosMsg[] = { - "null", - "registration", - "registration-rsp", - "submit", - "submit-rsp", - "query", - "query-rsp", - "retrieve", - "retrieve-rsp", - "create-table", - "create-table-rsp", //10 - - "drop-table", - "drop-table-rsp", - "alter-table", - "alter-table-rsp", - "create-vnode", - "create-vnode-rsp", - "drop-vnode", - "drop-vnode-rsp", - "alter-vnode", - "alter-vnode-rsp", //20 - - "drop-stable", - "drop-stable-rsp", - "alter-stream", - "alter-stream-rsp", - "config-dnode", - "config-dnode-rsp", - "", - "", - "", - "", //30 - - "connect", - "connect-rsp", - "create-acct", - "create-acct-rsp", - "alter-acct", - "alter-acct-rsp", - "drop-acct", - "drop-acct-rsp", - "create-user", - "create-user-rsp", //40 - - "alter-user", - "alter-user-rsp", - "drop-user", - "drop-user-rsp", - "create-dnode", - "create-dnode-rsp", - "drop-dnode", - "drop-dnode-rsp", - "create-db", - "create-db-rsp", //50 - - "drop-db", - "drop-db-rsp", - "use-db", - "use-db-rsp", - "alter-db", - "alter-db-rsp", - "create-table", - "create-table-rsp", - "drop-table", - "drop-table-rsp", //60 - - "alter-table", - "alter-table-rsp", - "table-meta", - "table-meta-rsp", - "super-table-meta", - "super-stable-meta-rsp", - "multi-table-meta", - "multi-table-meta-rsp", - "alter-stream", - "alter-stream-rsp", //70 - - "show", - "show-rsp", - "kill-query", - "kill-query-rsp", - "kill-stream", - "kill-stream-rsp", - "kill-connection", - "kill-connectoin-rsp", - "heart-beat", - "heart-beat-rsp", //80 - - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", //90 - - "config-table", - "config-table-rsp", - "config-vnode", - "config-vnode-rsp", - "status", - "status-rsp", - "grant", - "grant-rsp", - "", - "", //100 - - "sdb-sync", - "sdb-sync-rsp", - "sdb-forward", - "sdb-forward-rsp", - "max" -}; +#define TAOS_MESSAGE_C +#include "taosmsg.h" diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index 68e72b0964..a91a1e2128 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -28,103 +28,76 @@ extern "C" { #include "trpc.h" // message type -#define TSDB_MSG_TYPE_REG 1 -#define TSDB_MSG_TYPE_REG_RSP 2 -#define TSDB_MSG_TYPE_SUBMIT 3 -#define TSDB_MSG_TYPE_SUBMIT_RSP 4 -#define TSDB_MSG_TYPE_QUERY 5 -#define TSDB_MSG_TYPE_QUERY_RSP 6 -#define TSDB_MSG_TYPE_RETRIEVE 7 -#define TSDB_MSG_TYPE_RETRIEVE_RSP 8 + +#ifdef TAOS_MESSAGE_C +#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) msg, msg "-rsp", +char *taosMsg[] = { + "null", +#else +#define TAOS_DEFINE_MESSAGE_TYPE( name, msg ) name, name##_RSP, +enum { + TSDB_MESSAGE_NULL = 0, +#endif + +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_REG, "registration" ) // 1 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SUBMIT, "submit" ) // 3 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_QUERY, "query" ) // 5 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_RETRIEVE, "retrieve" ) // 7 // message from mnode to dnode -#define TSDB_MSG_TYPE_MD_CREATE_TABLE 9 -#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10 -#define TSDB_MSG_TYPE_MD_DROP_TABLE 11 -#define TSDB_MSG_TYPE_MD_DROP_TABLE_RSP 12 -#define TSDB_MSG_TYPE_MD_ALTER_TABLE 13 -#define TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP 14 -#define TSDB_MSG_TYPE_MD_CREATE_VNODE 15 -#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16 -#define TSDB_MSG_TYPE_MD_DROP_VNODE 17 -#define TSDB_MSG_TYPE_MD_DROP_VNODE_RSP 18 -#define TSDB_MSG_TYPE_MD_DROP_STABLE 19 -#define TSDB_MSG_TYPE_MD_DROP_STABLE_RSP 20 -#define TSDB_MSG_TYPE_MD_ALTER_STREAM 21 -#define TSDB_MSG_TYPE_MD_ALTER_STREAM_RSP 22 -#define TSDB_MSG_TYPE_MD_CONFIG_DNODE 23 -#define TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP 24 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_TABLE, "create-table" ) // 9 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_TABLE, "drop-table" ) // 11 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_TABLE, "alter-table" ) // 13 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CREATE_VNODE, "create-vnode" ) // 15 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_VNODE, "drop-vnode" ) // 17 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_DROP_STABLE, "drop-stable" ) // 19 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_ALTER_STREAM, "alter-stream" ) // 21 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_MD_CONFIG_DNODE, "config-dnode" ) // 23 // message from client to mnode -#define TSDB_MSG_TYPE_CM_CONNECT 31 -#define TSDB_MSG_TYPE_CM_CONNECT_RSP 32 -#define TSDB_MSG_TYPE_CM_CREATE_ACCT 33 -#define TSDB_MSG_TYPE_CM_CREATE_ACCT_RSP 34 -#define TSDB_MSG_TYPE_CM_ALTER_ACCT 35 -#define TSDB_MSG_TYPE_CM_ALTER_ACCT_RSP 36 -#define TSDB_MSG_TYPE_CM_DROP_ACCT 37 -#define TSDB_MSG_TYPE_CM_DROP_ACCT_RSP 38 -#define TSDB_MSG_TYPE_CM_CREATE_USER 39 -#define TSDB_MSG_TYPE_CM_CREATE_USER_RSP 40 -#define TSDB_MSG_TYPE_CM_ALTER_USER 41 -#define TSDB_MSG_TYPE_CM_ALTER_USER_RSP 42 -#define TSDB_MSG_TYPE_CM_DROP_USER 43 -#define TSDB_MSG_TYPE_CM_DROP_USER_RSP 44 -#define TSDB_MSG_TYPE_CM_CREATE_DNODE 45 -#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46 -#define TSDB_MSG_TYPE_CM_DROP_DNODE 47 -#define TSDB_MSG_TYPE_CM_DROP_DNODE_RSP 48 -#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE -#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP -#define TSDB_MSG_TYPE_CM_CREATE_DB 49 -#define TSDB_MSG_TYPE_CM_CREATE_DB_RSP 50 -#define TSDB_MSG_TYPE_CM_DROP_DB 51 -#define TSDB_MSG_TYPE_CM_DROP_DB_RSP 52 -#define TSDB_MSG_TYPE_CM_USE_DB 53 -#define TSDB_MSG_TYPE_CM_USE_DB_RSP 54 -#define TSDB_MSG_TYPE_CM_ALTER_DB 55 -#define TSDB_MSG_TYPE_CM_ALTER_DB_RSP 56 -#define TSDB_MSG_TYPE_CM_CREATE_TABLE 57 -#define TSDB_MSG_TYPE_CM_CREATE_TABLE_RSP 58 -#define TSDB_MSG_TYPE_CM_DROP_TABLE 59 -#define TSDB_MSG_TYPE_CM_DROP_TABLE_RSP 60 -#define TSDB_MSG_TYPE_CM_ALTER_TABLE 61 -#define TSDB_MSG_TYPE_CM_ALTER_TABLE_RSP 62 -#define TSDB_MSG_TYPE_CM_TABLE_META 63 -#define TSDB_MSG_TYPE_CM_TABLE_META_RSP 64 -#define TSDB_MSG_TYPE_CM_STABLE_VGROUP 65 -#define TSDB_MSG_TYPE_CM_STABLE_VGROUP_RSP 66 -#define TSDB_MSG_TYPE_CM_TABLES_META 67 -#define TSDB_MSG_TYPE_CM_TABLES_META_RSP 68 -#define TSDB_MSG_TYPE_CM_ALTER_STREAM 69 -#define TSDB_MSG_TYPE_CM_ALTER_STREAM_RSP 70 -#define TSDB_MSG_TYPE_CM_SHOW 71 -#define TSDB_MSG_TYPE_CM_SHOW_RSP 72 -#define TSDB_MSG_TYPE_CM_KILL_QUERY 73 -#define TSDB_MSG_TYPE_CM_KILL_QUERY_RSP 74 -#define TSDB_MSG_TYPE_CM_KILL_STREAM 75 -#define TSDB_MSG_TYPE_CM_KILL_STREAM_RSP 76 -#define TSDB_MSG_TYPE_CM_KILL_CONN 77 -#define TSDB_MSG_TYPE_CM_KILL_CONN_RSP 78 -#define TSDB_MSG_TYPE_CM_HEARTBEAT 79 -#define TSDB_MSG_TYPE_CM_HEARTBEAT_RSP 80 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CONNECT, "connect" ) // 31 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_ACCT, "create-acct" ) // 33 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_ACCT, "alter-acct" ) // 35 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_ACCT, "drop-acct" ) // 37 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_USER, "create-user" ) // 39 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_USER, "alter-user" ) // 41 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_USER, "drop-user" ) // 43 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DNODE, "create-dnode" ) // 45 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DNODE, "drop-dnode" ) // 47 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_DB, "create-db" ) // 49 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_DB, "drop-db" ) // 51 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_USE_DB, "use-db" ) // 53 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_DB, "alter-db" ) // 55 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_CREATE_TABLE, "create-table" ) // 57 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_DROP_TABLE, "drop-table" ) // 59 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_TABLE, "alter-table" ) // 61 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLE_META, "table-meta" ) // 63 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_STABLE_VGROUP, "stable-vgroup" ) // 65 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_TABLES_META, "tables-meta" ) // 67 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_ALTER_STREAM, "alter-stream" ) // 69 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_SHOW, "show" ) // 71 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_QUERY, "kill-query" ) // 73 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_STREAM, "kill-stream" ) // 75 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_KILL_CONN, "kill-conn" ) // 77 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_CM_HEARTBEAT, "heartbeat" ) // 79 // message from dnode to mnode -#define TSDB_MSG_TYPE_DM_CONFIG_TABLE 91 -#define TSDB_MSG_TYPE_DM_CONFIG_TABLE_RSP 92 -#define TSDB_MSG_TYPE_DM_CONFIG_VNODE 93 -#define TSDB_MSG_TYPE_DM_CONFIG_VNODE_RSP 94 -#define TSDB_MSG_TYPE_DM_STATUS 95 -#define TSDB_MSG_TYPE_DM_STATUS_RSP 96 -#define TSDB_MSG_TYPE_DM_GRANT 97 -#define TSDB_MSG_TYPE_DM_GRANT_RSP 98 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_TABLE, "config-table" ) // 91 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_CONFIG_VNODE, "config-vnode" ) // 93 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_STATUS, "status" ) // 95 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_DM_GRANT, "grant" ) // 97 -#define TSDB_MSG_TYPE_SDB_SYNC 101 -#define TSDB_MSG_TYPE_SDB_SYNC_RSP 102 -#define TSDB_MSG_TYPE_SDB_FORWARD 103 -#define TSDB_MSG_TYPE_SDB_FORWARD_RSP 104 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_SYNC, "sdb-sync" ) // 101 +TAOS_DEFINE_MESSAGE_TYPE( TSDB_MSG_TYPE_SDB_FORWARD, "sdb-forward" ) // 103 -#define TSDB_MSG_TYPE_MAX 105 +#ifndef TAOS_MESSAGE_C + TSDB_MSG_TYPE_MAX // 105 +#endif + +}; + +#define TSDB_MSG_TYPE_CM_CONFIG_DNODE TSDB_MSG_TYPE_MD_CONFIG_DNODE +#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP // IE type #define TSDB_IE_TYPE_SEC 1 From c40d9832769df60c8ee18b76c56bc4706b235fba Mon Sep 17 00:00:00 2001 From: slguan Date: Wed, 6 May 2020 20:04:20 +0800 Subject: [PATCH 13/21] scripts --- src/client/src/tscServer.c | 2 +- tests/script/unique/big/balance.sim | 6 - tests/script/unique/cluster/balance1.sim | 28 +- tests/script/unique/cluster/balance1_bug.sim | 789 ------------------ .../script/unique/cluster/balance1_single.sim | 716 ---------------- tests/script/unique/cluster/balance2.sim | 410 ++++----- tests/script/unique/cluster/balance3.sim | 199 ++--- tests/script/unique/cluster/testSuite.sim | 2 - 8 files changed, 217 insertions(+), 1935 deletions(-) delete mode 100644 tests/script/unique/cluster/balance1_bug.sim delete mode 100644 tests/script/unique/cluster/balance1_single.sim diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index aa4eb01eae..a6ed575686 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2262,7 +2262,7 @@ int tscProcessConnectRsp(SSqlObj *pSql) { strcpy(pObj->sversion, pConnect->serverVersion); pObj->writeAuth = pConnect->writeAuth; pObj->superAuth = pConnect->superAuth; -// taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer); + taosTmrReset(tscProcessActivityTimer, tsShellActivityTimer * 500, pObj, tscTmr, &pObj->pTimer); return 0; } diff --git a/tests/script/unique/big/balance.sim b/tests/script/unique/big/balance.sim index 3ae30f283d..270c3810a7 100644 --- a/tests/script/unique/big/balance.sim +++ b/tests/script/unique/big/balance.sim @@ -1,9 +1,3 @@ - - - - - - system sh/stop_dnodes.sh system sh/deploy.sh -n dnode1 -i 1 system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 diff --git a/tests/script/unique/cluster/balance1.sim b/tests/script/unique/cluster/balance1.sim index a7113b4535..97d5bb468a 100644 --- a/tests/script/unique/cluster/balance1.sim +++ b/tests/script/unique/cluster/balance1.sim @@ -442,19 +442,24 @@ sql reset query cache sleep 1000 sql use c_b1_d1 -sql select * from c_b1_t1 +sql select * from c_b1_d1.c_b1_t1 +print $rows +print $data01 $data11 $data21 $data31 $data41 if $rows != 5 then return -1 endi sql use c_b1_d2 -sql select * from c_b1_t2 -if $rows == 6 then +sql select * from c_b1_d2.c_b1_t2 +print $rows +print $data01 $data11 $data21 $data31 $data41 +if $rows != 6 then return -1 endi sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc +sql select * from c_b1_d3.c_b1_t3 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $rows != 6 then return -1 @@ -464,11 +469,13 @@ if $data01 != 36 then endi sql use c_b1_d4 -sql select * from c_b1_t4 order by t desc +sql select * from c_b1_d4.c_b1_t4 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 sql use c_b1_d5 -sql select * from c_b1_t5 order by t desc +sql select * from c_b1_d5.c_b1_t5 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 51 then return -1 @@ -487,7 +494,8 @@ if $data41 != 55 then endi sql use c_b1_d6 -sql select * from c_b1_t6 order by t desc +sql select * from c_b1_d6.c_b1_t6 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 61 then return -1 @@ -506,7 +514,8 @@ if $data41 != 65 then endi sql use c_b1_d7 -sql select * from c_b1_t7 order by t desc +sql select * from c_b1_d7.c_b1_t7 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 71 then return -1 @@ -525,7 +534,8 @@ if $data41 != 75 then endi sql use c_b1_d8 -sql select * from c_b1_t8 order by t desc +sql select * from c_b1_d8.c_b1_t8 order by t desc +print $rows print $data01 $data11 $data21 $data31 $data41 if $data01 != 81 then return -1 diff --git a/tests/script/unique/cluster/balance1_bug.sim b/tests/script/unique/cluster/balance1_bug.sim deleted file mode 100644 index d9f903d55e..0000000000 --- a/tests/script/unique/cluster/balance1_bug.sim +++ /dev/null @@ -1,789 +0,0 @@ -system sh/stop_dnodes.sh -system sh/deploy.sh -n dnode1 -i 1 -system sh/deploy.sh -n dnode2 -i 2 -system sh/deploy.sh -n dnode3 -i 3 -system sh/deploy.sh -n dnode4 -i 4 - -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 - -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 - -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c clog -v 1 - -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 - -print ============== step1 -print ========= start dnode1 -system sh/exec_up.sh -n dnode1 -s start -sql connect - -sql create database c_b1_d1 tables 4 -sql use c_b1_d1 - -sql create table c_b1_t1 (t timestamp, i int) -sql insert into c_b1_t1 values(now+1s, 15) -sql insert into c_b1_t1 values(now+2s, 14) -sql insert into c_b1_t1 values(now+2s, 13) -sql insert into c_b1_t1 values(now+3s, 12) -sql insert into c_b1_t1 values(now+4s, 11) - -sql create database c_b1_d2 tables 4 -sql use c_b1_d2 -sql create table c_b1_t2 (t timestamp, i int) -sql insert into c_b1_t2 values(now+1s, 25) -sql insert into c_b1_t2 values(now+2s, 24) -sql insert into c_b1_t2 values(now+3s, 23) -sql insert into c_b1_t2 values(now+4s, 22) -sql insert into c_b1_t2 values(now+5s, 21) - -sql show dnodes -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - return -1 -endi -if $dnode2Vnodes != null then - return -1 -endi - -print ============================== step2 -print ========= start dnode2 -sleep 2000 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 5000 - -$x = 0 -show2: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show2 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 3 then - goto show2 -endi -if $dnode2Vnodes != 3 then - goto show2 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step3 -print ========= add db3 -sql create database c_b1_d3 tables 4 -sql use c_b1_d3 -sql create table c_b1_t3 (t timestamp, i int) -sql insert into c_b1_t3 values(now+1s, 35) -sql insert into c_b1_t3 values(now+2s, 34) -sql insert into c_b1_t3 values(now+3s, 33) -sql insert into c_b1_t3 values(now+4s, 32) -sql insert into c_b1_t3 values(now+5s, 31) - -print ============================== step4 -print ========= drop dnode2 -sql drop dnode $hostname2 -sleep 9000 - -$x = 0 -show4: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show4 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 1 then - goto show4 -endi -if $dnode2Vnodes != null then - goto show4 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step5 -print ========= add dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -sleep 5000 -system sh/exec_up.sh -n dnode2 -s start -sql create dnode $hostname2 -sleep 9000 - -$x = 0 -show5: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show5 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show5 -endi -if $dnode2Vnodes != 3 then - goto show5 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step6 -print ========= drop dnode1 -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -print stop dnode1 and sleep 10000 -sleep 10000 - -sql drop dnode $hostname1 -print drop dnode1 and sleep 9000 -sleep 9000 - -$x = 0 -show6: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show6 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != null then - goto show6 -endi -if $dnode2Vnodes != 1 then - goto show6 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step7 -print ========= add dnode1 -sql create dnode $hostname1 -sleep 23000 -system sh/exec_up.sh -n dnode1 -s start -sleep 14000 - -$x = 0 -show7: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show7 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 3 then - goto show7 -endi -if $dnode2Vnodes != 2 then - goto show7 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step8 -print ========= drop dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -print stop dnode2 and sleep 10000 -sleep 20000 -sql drop dnode $hostname2 -print drop dnode2 and sleep 9000 -sleep 19000 - -$x = 0 -show8: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show8 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 1 then - goto show8 -endi -if $dnode2Vnodes != null then - goto show8 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -if $dnode1Role != master then - return -1 -endi - -print ============================== step9 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -$x = 0 -show9: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show9 -endi -if $dnode2Vnodes != 3 then - goto show9 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step10 -print ========= add db4 -sql create database c_b1_d4 tables 4 -sql use c_b1_d4 -sql create table c_b1_t4 (t timestamp, i int) -sql insert into c_b1_t4 values(now+1s, 45) -sql insert into c_b1_t4 values(now+2s, 44) -sql insert into c_b1_t4 values(now+3s, 43) -sql insert into c_b1_t4 values(now+4s, 42) -sql insert into c_b1_t4 values(now+5s, 41) - -$x = 0 -show10: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show10 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 2 then - goto show10 -endi -if $dnode2Vnodes != 2 then - goto show10 -endi - -sql use c_b1_d3 -sql insert into c_b1_t3 values(now+1s, 35) - -sql use c_b1_d2 -sql insert into c_b1_t2 values(now+1s, 25) - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role - -if $dnode1Role != master then - return -1 -endi - -print ============================== step11 -print ========= drop dnode2 -sleep 2000 -sql drop dnode $hostname2 -sleep 9000 - -$x = 0 -show11: - $x = $x + 1 - sleep 2000 - if $x == 20 then - return -1 - endi -sql show dnodes -x show11 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -if $dnode1Vnodes != 0 then - goto show11 -endi -if $dnode2Vnodes != null then - goto show11 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT - -print ============================== step12 -print ========= add db5 -sql create database c_b1_d5 tables 4 -sql use c_b1_d5 -sql create table c_b1_t5 (t timestamp, i int) -x error3 -print no enough vnodes, but create success -return -1 -error3: - -print ============================== step13 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -sql use c_b1_d5; -$x = 0 -create5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t5 (t timestamp, i int) -x create5 -sql insert into c_b1_t5 values(now+1s, 55) -sql insert into c_b1_t5 values(now+2s, 54) -sql insert into c_b1_t5 values(now+3s, 53) -sql insert into c_b1_t5 values(now+4s, 52) -sql insert into c_b1_t5 values(now+5s, 51) - -sql create database c_b1_d6 -sql use c_b1_d6 -$x = 0 -create6: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t6 (t timestamp, i int) -x create6 -sql insert into c_b1_t6 values(now+1s, 65) -sql insert into c_b1_t6 values(now+2s, 64) -sql insert into c_b1_t6 values(now+3s, 63) -sql insert into c_b1_t6 values(now+4s, 62) -sql insert into c_b1_t6 values(now+5s, 61) - -sql show dnodes -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes - -#if $dnode1Vnodes != 1 then -# return -1 -#endi -#if $dnode2Vnodes != 1 then -# return -1 -#endi - -print ============================== step14 -print ========= add dnode3 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -sleep 2000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 15000 - -$x = 0 -show14: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show14 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != 2 then - goto show14 -endi -if $dnode2Vnodes != 2 then - goto show14 -endi -if $dnode3Vnodes != 2 then - goto show14 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role - -print ============================== step15 -print ========= create db7 db8 - -sql create database c_b1_d7 tables 4 -sql use c_b1_d7 -sql create table c_b1_t7 (t timestamp, i int) -sql insert into c_b1_t7 values(now+1s, 75) -sql insert into c_b1_t7 values(now+2s, 74) -sql insert into c_b1_t7 values(now+3s, 73) -sql insert into c_b1_t7 values(now+4s, 72) -sql insert into c_b1_t7 values(now+5s, 71) - -sql create database c_b1_d8 -sql use c_b1_d8 -sql create table c_b1_t8 (t timestamp, i int) -sql insert into c_b1_t8 values(now+1s, 85) -sql insert into c_b1_t8 values(now+2s, 84) -sql insert into c_b1_t8 values(now+3s, 83) -sql insert into c_b1_t8 values(now+4s, 82) -sql insert into c_b1_t8 values(now+5s, 81) - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ========== add dnode4 -sleep 2000 -sql create dnode $hostname4 -print sql create dnode $hostname4 over -system sh/exec_up.sh -n dnode4 -s start -print sleep 12000 -sleep 12000 -print sleep 12000 over - -$x = 0 -show15: - $x = $x + 1 - sleep 2000 - if $x == 15 then - return -1 - endi -sql show dnodes -x show15 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 2 then - goto show15 -endi -if $dnode2Vnodes != 2 then - goto show15 -endi -if $dnode3Vnodes != 2 then - goto show15 -endi -if $dnode4Vnodes != 2 then - goto show15 -endi - -print ============================== step16 -print ========= drop dnode4, create db9 - -sql drop dnode $hostname4 -sleep 10000 -sql create database c_b1_d9 tables 4 -sql use c_b1_d9 -sql create table c_b1_t9 (t timestamp, i int) -sql insert into c_b1_t9 values(now+1s, 95) -sql insert into c_b1_t9 values(now+2s, 94) -sql insert into c_b1_t9 values(now+3s, 93) -sql insert into c_b1_t9 values(now+4s, 92) -sql insert into c_b1_t9 values(now+5s, 91) - -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - -$x = 0 -show16: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show16 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode1Vnodes != 1 then - goto show16 -endi -if $dnode2Vnodes != 1 then - goto show16 -endi -if $dnode3Vnodes != 1 then - goto show16 -endi - -print ============================== step17 -print ========= check data - -sleep 2000 - -sql use c_b1_d1 -sql select * from c_b1_t1 order by t desc -x s1 -s1: - -sql use c_b1_d2 -sql select * from c_b1_t2 order by t desc -x s2 -print $data01 $data11 $data21 $data31 $data41 - -if $data01 != 25 then - return -1 -endi - -if $data11 != 21 then - return -1 -endi -if $data21 != 22 then - return -1 -endi -if $data31 != 23 then - return -1 -endi -if $data41 != 24 then - return -1 -endi -s2: - -sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc -x s3 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 35 then - return -1 -endi -s3: - -sql use c_b1_d4 -sql select * from c_b1_d4.c_b1_t4 order by t desc -x s4 -print $data01 $data11 $data21 $data31 $data41 -s4: - - -sql use c_b1_d5 -sql select * from c_b1_d5.c_b1_t5 order by t desc -x s5 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 51 then - return -1 -endi -if $data11 != 52 then - return -1 -endi -if $data21 != 53 then - return -1 -endi -if $data31 != 54 then - return -1 -endi -if $data41 != 55 then - return -1 -endi -s5: - -sql use c_b1_d6 -sql select * from c_b1_d6.c_b1_t6 order by t desc -x s6 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 61 then - return -1 -endi -if $data11 != 62 then - return -1 -endi -if $data21 != 63 then - return -1 -endi -if $data31 != 64 then - return -1 -endi -if $data41 != 65 then - return -1 -endi -s6: - -sql use c_b1_d7 -sql select * from c_b1_d7.c_b1_t7 order by t desc -x s7 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 71 then - return -1 -endi -if $data11 != 72 then - return -1 -endi -if $data21 != 73 then - return -1 -endi -if $data31 != 74 then - return -1 -endi -if $data41 != 75 then - return -1 -endi -s7: - -sql use c_b1_d9 -sql select * from c_b1_t9 order by t desc -x s8 -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 91 then - return -1 -endi -if $data11 != 92 then - return -1 -endi -if $data21 != 93 then - return -1 -endi -if $data31 != 94 then - return -1 -endi -if $data41 != 95 then - return -1 -endi -s8: - -print ============================================ over -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - - - diff --git a/tests/script/unique/cluster/balance1_single.sim b/tests/script/unique/cluster/balance1_single.sim deleted file mode 100644 index be46186a59..0000000000 --- a/tests/script/unique/cluster/balance1_single.sim +++ /dev/null @@ -1,716 +0,0 @@ -system sh/stop_dnodes.sh -system sh/deploy.sh -n dnode1 -i 1 -system sh/deploy.sh -n dnode2 -i 2 -system sh/deploy.sh -n dnode3 -i 3 -system sh/deploy.sh -n dnode4 -i 4 -system sh/deploy.sh -n dnode5 -i 5 - -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 1 -system sh/cfg.sh -n dnode5 -c numOfMPeers -v 1 - -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode5 -c numOfTotalVnodes -v 4 - -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode5 -c clog -v 1 - -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 4 -system sh/cfg.sh -n dnode5 -c mgmtEqualVnodeNum -v 4 - -print ============== step1 -print ========= start dnode1 -system sh/exec_up.sh -n dnode1 -s start -sleep 3000 -sql connect -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start - -$x = 0 -show1: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show1 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode2Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode3Vnodes - -if $dnode1Vnodes != 4 then - goto show1 -endi -if $dnode2Vnodes != 4 then - goto show1 -endi -sleep 1000 - -sql create database c_b1_d1 tables 4 -sql use c_b1_d1 - -sql create table c_b1_t1 (t timestamp, i int) -sql insert into c_b1_t1 values(now+1s, 15) -sql insert into c_b1_t1 values(now+2s, 14) -sql insert into c_b1_t1 values(now+2s, 13) -sql insert into c_b1_t1 values(now+3s, 12) -sql insert into c_b1_t1 values(now+4s, 11) - -sql create database c_b1_d2 tables 4 -sql use c_b1_d2 -sql create table c_b1_t2 (t timestamp, i int) -sql insert into c_b1_t2 values(now+1s, 25) -sql insert into c_b1_t2 values(now+2s, 24) -sql insert into c_b1_t2 values(now+3s, 23) -sql insert into c_b1_t2 values(now+4s, 22) -sql insert into c_b1_t2 values(now+5s, 21) - -sql show dnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - return -1 -endi -if $dnode3Vnodes != null then - return -1 -endi - -print ============================== step2 -print ========= start dnode3 -sleep 3000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 8000 - -$x = 0 -show2: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show2 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 3 then - goto show2 -endi -if $dnode3Vnodes != 3 then - goto show2 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step3 -print ========= add db3 -sql create database c_b1_d3 tables 4 -sql use c_b1_d3 -sql create table c_b1_t3 (t timestamp, i int) -sql insert into c_b1_t3 values(now+1s, 35) -sql insert into c_b1_t3 values(now+2s, 34) -sql insert into c_b1_t3 values(now+3s, 33) -sql insert into c_b1_t3 values(now+4s, 32) -sql insert into c_b1_t3 values(now+5s, 31) - - -print ============================== step4 -print ========= drop dnode3 -sql drop dnode $hostname3 -sleep 9000 - -$x = 0 -show4: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show4 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 1 then - goto show4 -endi -if $dnode3Vnodes != null then - goto show4 -endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -print ============================== step5 -print ========= add dnode3 -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -sleep 5000 -system sh/exec_up.sh -n dnode3 -s start -sql create dnode $hostname3 -sleep 9000 - -$x = 0 -show5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show5 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show5 -endi -if $dnode3Vnodes != 3 then - goto show5 -endi - -print ============================== step6 -print ========= drop dnode2 -system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -print stop dnode2 and sleep 10000 -sleep 10000 - -sql drop dnode $hostname2 -print drop dnode2 and sleep 9000 -sleep 9000 - -$x = 0 -show6: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show6 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != null then - goto show6 -endi -if $dnode3Vnodes != 1 then - goto show6 -endi - -#only c_b2_d2 has data, c_b1_d1 and c_b1_d3 is null - -print ============================== step7 -print ========= add dnode2 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start -sleep 9000 - -$x = 0 -show7: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show7 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 3 then - goto show7 -endi -if $dnode3Vnodes != 2 then - goto show7 -endi - -print ============================== step8 -print ========= drop dnode3 -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -print stop dnode3 and sleep 10000 -sleep 10000 -sql drop dnode $hostname3 -print drop dnode3 and sleep 9000 -sleep 9000 - -$x = 0 -show8: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show8 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 1 then - goto show8 -endi -if $dnode3Vnodes != null then - goto show8 -endi - -print ============================== step9 -print ========= add dnode3 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 9000 - -$x = 0 -show9: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show9 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show9 -endi -if $dnode3Vnodes != 3 then - goto show9 -endi - -print ============================== step10 -print ========= add db4 -sql create database c_b1_d4 tables 4 -sql use c_b1_d4 -sql create table c_b1_t4 (t timestamp, i int) -sql insert into c_b1_t4 values(now+1s, 45) -sql insert into c_b1_t4 values(now+2s, 44) -sql insert into c_b1_t4 values(now+3s, 43) -sql insert into c_b1_t4 values(now+4s, 42) -sql insert into c_b1_t4 values(now+5s, 41) - -$x = 0 -show10: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show10 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 2 then - goto show10 -endi -if $dnode3Vnodes != 2 then - goto show10 -endi - -sql use c_b1_d3 -sql insert into c_b1_t3 values(now+1s, 35) - -sql use c_b1_d2 -sql insert into c_b1_t2 values(now+1s, 25) - -print ============================== step11 -print ========= drop dnode3 -sql drop dnode $hostname3 -sleep 9000 - -$x = 0 -show11: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show11 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -if $dnode2Vnodes != 0 then - goto show11 -endi -if $dnode3Vnodes != null then - goto show11 -endi - -system sh/exec_up.sh -n dnode3 -s stop -x SIGINT - -print ============================== step12 -print ========= add db5 -sql create database c_b1_d5 tables 4 -sql use c_b1_d5 - -print ============================== step13 -print ========= add dnode3 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start -sleep 9000 - -sql use c_b1_d5; -$x = 0 -create5: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql create table c_b1_t5 (t timestamp, i int) -x create5 -sql insert into c_b1_t5 values(now+1s, 55) -sql insert into c_b1_t5 values(now+2s, 54) -sql insert into c_b1_t5 values(now+3s, 53) -sql insert into c_b1_t5 values(now+4s, 52) -sql insert into c_b1_t5 values(now+5s, 51) - -sql create database c_b1_d6 tables 4 -sql use c_b1_d6 -$x = 0 -create6: - $x = $x + 1 - sleep 1000 - if $x == 20 then - return -1 - endi -sql create table c_b1_t6 (t timestamp, i int) -x create6 -sql insert into c_b1_t6 values(now+1s, 65) -sql insert into c_b1_t6 values(now+2s, 64) -sql insert into c_b1_t6 values(now+3s, 63) -sql insert into c_b1_t6 values(now+4s, 62) -sql insert into c_b1_t6 values(now+5s, 61) - -sql show dnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes - -#if $dnode2Vnodes != 1 then -# return -1 -#endi -#if $dnode3Vnodes != 1 then -# return -1 -#endi - -print ============================== step14 -print ========= add dnode4 -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start -sleep 10000 - -$x = 0 -show14: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show14 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode2Vnodes != 2 then - goto show14 -endi -if $dnode3Vnodes != 2 then - goto show14 -endi -if $dnode4Vnodes != 2 then - goto show14 -endi - -print ============================== step15 -print ========= create db7 db8 - -sql create database c_b1_d7 tables 4 -sql use c_b1_d7 -sql create table c_b1_t7 (t timestamp, i int) -sql insert into c_b1_t7 values(now+1s, 75) -sql insert into c_b1_t7 values(now+2s, 74) -sql insert into c_b1_t7 values(now+3s, 73) -sql insert into c_b1_t7 values(now+4s, 72) -sql insert into c_b1_t7 values(now+5s, 71) - -sql create database c_b1_d8 tables 4 -sql use c_b1_d8 -sql create table c_b1_t8 (t timestamp, i int) -sql insert into c_b1_t8 values(now+1s, 85) -sql insert into c_b1_t8 values(now+2s, 84) -sql insert into c_b1_t8 values(now+3s, 83) -sql insert into c_b1_t8 values(now+4s, 82) -sql insert into c_b1_t8 values(now+5s, 81) - - -print ========== add dnode5 -sql create dnode $hostname5 -print sql create dnode $hostname5 over -system sh/exec_up.sh -n dnode5 -s start -print sleep 12000 -sleep 12000 -print sleep 12000 over - -$x = 0 -show15: - $x = $x + 1 - sleep 1000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show15 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes -$dnode5Vnodes = $data2_5 -print dnode5 $dnode5Vnodes - -if $dnode2Vnodes != 2 then - goto show15 -endi -if $dnode3Vnodes != 2 then - goto show15 -endi -if $dnode4Vnodes != 2 then - goto show15 -endi -if $dnode5Vnodes != 2 then - goto show15 -endi - -print ============================== step16 -print ========= drop dnode5, create db9 - -sql drop dnode $hostname5 -sleep 10000 -sql create database c_b1_d9 tables 4 -sql use c_b1_d9 -sql create table c_b1_t9 (t timestamp, i int) -sql insert into c_b1_t9 values(now+1s, 95) -sql insert into c_b1_t9 values(now+2s, 94) -sql insert into c_b1_t9 values(now+3s, 93) -sql insert into c_b1_t9 values(now+4s, 92) -sql insert into c_b1_t9 values(now+5s, 91) - -system sh/exec_up.sh -n dnode5 -s stop -x SIGINT - -$x = 0 -show16: - $x = $x + 1 - sleep 1000 - if $x == 50 then - return -1 - endi -sql show dnodes -x show16 -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode2Vnodes != 1 then - goto show16 -endi -if $dnode3Vnodes != 1 then - goto show16 -endi -if $dnode4Vnodes != 1 then - goto show16 -endi - -print ============================== step17 -print ========= check data - -sql use c_b1_d1 -sql select * from c_b1_t1 -if $rows != 0 then - return -1 -endi - -sql use c_b1_d2 -sql select * from c_b1_t2 -if $rows != 6 then - return -1 -endi - -sql use c_b1_d3 -sql select * from c_b1_t3 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $rows != 1 then - return -1 -endi -if $data01 != 35 then - return -1 -endi - -sql use c_b1_d4 -sql select * from c_b1_t4 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 41 then - return -1 -endi -if $data11 != 42 then - return -1 -endi -if $data21 != 43 then - return -1 -endi -if $data31 != 44 then - return -1 -endi -if $data41 != 45 then - return -1 -endi - -sql use c_b1_d5 -sql select * from c_b1_t5 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 51 then - return -1 -endi -if $data11 != 52 then - return -1 -endi -if $data21 != 53 then - return -1 -endi -if $data31 != 54 then - return -1 -endi -if $data41 != 55 then - return -1 -endi - -sql use c_b1_d6 -sql select * from c_b1_t6 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 61 then - return -1 -endi -if $data11 != 62 then - return -1 -endi -if $data21 != 63 then - return -1 -endi -if $data31 != 64 then - return -1 -endi -if $data41 != 65 then - return -1 -endi - -sql use c_b1_d7 -sql select * from c_b1_t7 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 71 then - return -1 -endi -if $data11 != 72 then - return -1 -endi -if $data21 != 73 then - return -1 -endi -if $data31 != 74 then - return -1 -endi -if $data41 != 75 then - return -1 -endi - -sql use c_b1_d8 -sql select * from c_b1_t8 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 81 then - return -1 -endi -if $data11 != 82 then - return -1 -endi -if $data21 != 83 then - return -1 -endi -if $data31 != 84 then - return -1 -endi -if $data41 != 85 then - return -1 -endi - -sql use c_b1_d9 -sql select * from c_b1_t9 order by t desc -print $data01 $data11 $data21 $data31 $data41 -if $data01 != 91 then - return -1 -endi -if $data11 != 92 then - return -1 -endi -if $data21 != 93 then - return -1 -endi -if $data31 != 94 then - return -1 -endi -if $data41 != 95 then - return -1 -endi - - -print ============================================ over -#system sh/exec_up.sh -n dnode2 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode3 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode4 -s stop -x SIGINT -#system sh/exec_up.sh -n dnode5 -s stop -x SIGINT - - - diff --git a/tests/script/unique/cluster/balance2.sim b/tests/script/unique/cluster/balance2.sim index 907b344140..af77db3ce6 100644 --- a/tests/script/unique/cluster/balance2.sim +++ b/tests/script/unique/cluster/balance2.sim @@ -128,13 +128,13 @@ print dnode2 $dnode2Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes -if $dnode1Vnodes != 1 then +if $dnode1Vnodes != 3 then goto show2 endi if $dnode2Vnodes != null then goto show2 endi -if $dnode3Vnodes != 1 then +if $dnode3Vnodes != 3 then goto show2 endi @@ -151,18 +151,9 @@ print dnode4 ==> $dnode4Role system sh/exec_up.sh -n dnode2 -s stop -x SIGINT print ============================== step3 -print ========= start dnode2 -sql create dnode $hostname2 - -sleep 3000 -system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode2 -s start +print ========= start dnode4 +sql create dnode $hostname4 +system sh/exec_up.sh -n dnode4 -s start sleep 10000 $x = 0 @@ -175,15 +166,15 @@ show3: sql show dnodes -x show3 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes if $dnode1Vnodes != 2 then goto show3 endi -if $dnode2Vnodes != 2 then +if $dnode4Vnodes != 2 then goto show3 endi if $dnode3Vnodes != 2 then @@ -200,6 +191,20 @@ print dnode2 ==> $dnode2Role print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +if $dnode1Role != master then + return -1 +endi +if $dnode2Role != null then + return -1 +endi +if $dnode3Role != slave then + return -1 +endi + +if $dnode4Role != slave then + return -1 +endi + print ============================== step4 print ========= drop dnode3 sql drop dnode $hostname3 @@ -215,15 +220,15 @@ show4: sql show dnodes -x show4 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes -if $dnode1Vnodes != 1 then +if $dnode1Vnodes != 3 then goto show4 endi -if $dnode2Vnodes != 1 then +if $dnode4Vnodes != 3 then goto show4 endi if $dnode3Vnodes != null then @@ -240,21 +245,26 @@ print dnode2 ==> $dnode2Role print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +if $dnode1Role != master then + return -1 +endi +if $dnode2Role != null then + return -1 +endi +if $dnode3Role != null then + return -1 +endi + +if $dnode4Role != slave then + return -1 +endi + system sh/exec_up.sh -n dnode3 -s stop -x SIGINT print ============================== step5 print ========= start dnode3 -sql create dnode $hostname3 - -sleep 3000 -system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode3 -s start +sql create dnode $hostname5 +system sh/exec_up.sh -n dnode5 -s start sleep 9000 $x = 0 @@ -267,33 +277,30 @@ show5: sql show dnodes -x show5 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes if $dnode1Vnodes != 2 then goto show5 endi -if $dnode2Vnodes != 2 then +if $dnode4Vnodes != 2 then goto show5 endi -if $dnode3Vnodes != 2 then +if $dnode5Vnodes != 2 then goto show5 endi sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role print ============================== step6 -print ========= drop dnode1 system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print stop dnode1 and sleep 10000 sleep 10000 @@ -302,6 +309,21 @@ sql drop dnode $hostname1 print drop dnode1 and sleep 9000 sleep 9000 +sql show mnodes +$dnode1Role = $data2_1 +$dnode4Role = $data2_4 +$dnode5Role = $data2_5 +print dnode1 ==> $dnode1Role +print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role + +if $dnode1Role != offline then + return -1 +endi + +print ============================== step6.1 +system sh/exec_up.sh -n dnode1 -s start + $x = 0 show6: $x = $x + 1 @@ -312,68 +334,56 @@ show6: sql show dnodes -x show6 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes if $dnode1Vnodes != null then goto show6 endi -if $dnode2Vnodes != 1 then +if $dnode4Vnodes != 3 then goto show6 endi -if $dnode3Vnodes != 1 then +if $dnode5Vnodes != 3 then goto show6 endi sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role + +system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step7 -print ========= start dnode1 -sql create dnode $hostname1 +print ========= start dnode6 +sql create dnode $hostname6 +system sh/exec_up.sh -n dnode6 -s start +sleep 9000 sql show mnodes $dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 +$dnode5Role = $data2_5 +$dnode6Role = $data2_6 print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role print dnode4 ==> $dnode4Role - -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode1 -s start -sleep 9000 +print dnode5 ==> $dnode5Role +print dnode6 ==> $dnode6Role $x = 0 - show7: sql show mnodes - $dnode1Role = $data2_1 - $dnode2Role = $data2_2 - $dnode3Role = $data2_3 $dnode4Role = $data2_4 - print dnode1 ==> $dnode1Role - print dnode2 ==> $dnode2Role - print dnode3 ==> $dnode3Role + $dnode5Role = $data2_5 + $dnode6Role = $data2_6 print dnode4 ==> $dnode4Role + print dnode5 ==> $dnode5Role + print dnode6 ==> $dnode6Role $x = $x + 1 sleep 2000 @@ -381,20 +391,21 @@ show7: return -1 endi sql show dnodes -x show7 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -if $dnode1Vnodes != 2 then +$dnode4Vnodes = $data2_4 +print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes + +if $dnode4Vnodes != 2 then goto show7 endi -if $dnode2Vnodes != 2 then +if $dnode5Vnodes != 2 then goto show7 endi -if $dnode3Vnodes != 2 then +if $dnode6Vnodes != 2 then goto show7 endi @@ -410,19 +421,19 @@ sql insert into c_b2_t4 values(1520000022043, 43) sql insert into c_b2_t4 values(1520000023042, 42) sql insert into c_b2_t4 values(1520000024041, 41) -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start +sql create dnode $hostname7 +system sh/exec_up.sh -n dnode7 -s start sleep 9000 sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 $dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role +$dnode5Role = $data2_5 +$dnode6Role = $data2_6 +$dnode7Role = $data2_7 print dnode4 ==> $dnode4Role +print dnode5 ==> $dnode5Role +print dnode6 ==> $dnode6Role +print dnode7 ==> $dnode7Role $x = 0 show8: @@ -432,154 +443,30 @@ show8: return -1 endi sql show dnodes -x show8 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes -if $dnode1Vnodes != 2 then - goto show8 -endi -if $dnode2Vnodes != 2 then - goto show8 -endi -if $dnode3Vnodes != 2 then - goto show8 -endi if $dnode4Vnodes != 2 then goto show8 endi - -print ============================== step9 -print ========= drop dnode1.4 -sql drop dnode $hostname1 -sql drop dnode $hostname4 -sleep 10000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - -$x = 0 -show9: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != null then - goto show9 +if $dnode5Vnodes != 2 then + goto show8 endi -if $dnode2Vnodes != 0 then - goto show9 +if $dnode6Vnodes != 2 then + goto show8 endi -if $dnode3Vnodes != 0 then - goto show9 -endi -if $dnode4Vnodes != null then - goto show9 -endi - -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT -system sh/exec_up.sh -n dnode4 -s stop -x SIGINT - -print ============================== step10 -print ========= start dnode1.4 -sql create dnode $hostname1 -sql create dnode $hostname4 - -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -ssystem sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -sleep 3000 -system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -sleep 3000 - -system sh/exec_up.sh -n dnode1 -s start -system sh/exec_up.sh -n dnode4 -s start -sleep 10000 - -$x = 0 -show10: - sql show mnodes - $dnode1Role = $data2_1 - $dnode2Role = $data2_2 - $dnode3Role = $data2_3 - $dnode4Role = $data2_4 - print dnode1 ==> $dnode1Role - print dnode2 ==> $dnode2Role - print dnode3 ==> $dnode3Role - print dnode4 ==> $dnode4Role - - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show10 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != 2 then - goto show10 -endi -if $dnode2Vnodes != 2 then - goto show10 -endi -if $dnode3Vnodes != 2 then - goto show10 -endi -if $dnode4Vnodes != 2 then - goto show10 +if $dnode7Vnodes != 2 then + goto show8 endi print ============================== step11 -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role - sql create database c_b2_d5 replica 2 tables 4 sql use c_b2_d5; sql create table c_b2_t5 (t timestamp, i int) @@ -606,43 +493,34 @@ show11: return -1 endi sql show dnodes -x show11 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes -if $dnode1Vnodes != 1 then - goto show11 -endi -if $dnode2Vnodes != 1 then - goto show11 -endi -if $dnode3Vnodes != 1 then - goto show11 -endi if $dnode4Vnodes != 1 then goto show11 endi - -sql show mnodes -$dnode1Role = $data2_1 -$dnode2Role = $data2_2 -$dnode3Role = $data2_3 -$dnode4Role = $data2_4 -print dnode1 ==> $dnode1Role -print dnode2 ==> $dnode2Role -print dnode3 ==> $dnode3Role -print dnode4 ==> $dnode4Role +if $dnode5Vnodes != 1 then + goto show11 +endi +if $dnode6Vnodes != 1 then + goto show11 +endi +if $dnode7Vnodes != 1 then + goto show11 +endi print ============================== step12 print ========= check data -sql use c_b2_d1 -sql select * from c_b2_t1 order by t desc +sql reset query cache + +sql select * from c_b2_d1.c_b2_t1 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 11 then return -1 @@ -660,8 +538,7 @@ if $data41 != 15 then return -1 endi -sql use c_b2_d2 -sql select * from c_b2_t2 order by t desc +sql select * from c_b2_d2.c_b2_t2 order by t desc print $data01 $data11 $data21 $data31 $data41 #if $data01 != 21 then @@ -680,8 +557,7 @@ print $data01 $data11 $data21 $data31 $data41 # return -1 #endi -sql use c_b2_d3 -sql select * from c_b2_t3 order by t desc +sql select * from c_b2_d3.c_b2_t3 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 31 then return -1 @@ -699,8 +575,7 @@ if $data41 != 35 then return -1 endi -sql use c_b2_d4 -sql select * from c_b2_t4 order by t desc +sql select * from c_b2_d4.c_b2_t4 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 41 then return -1 @@ -718,8 +593,7 @@ if $data41 != 45 then return -1 endi -sql use c_b2_d5 -sql select * from c_b2_t5 order by t desc +sql select * from c_b2_d5.c_b2_t5 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 51 then return -1 @@ -737,8 +611,7 @@ if $data41 != 55 then return -1 endi -sql use c_b2_d6 -sql select * from c_b2_t6 order by t desc +sql select * from c_b2_d6.c_b2_t6 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 61 then return -1 @@ -756,7 +629,6 @@ if $data41 != 65 then return -1 endi - print ============================================ over system sh/exec_up.sh -n dnode1 -s stop -x SIGINT system sh/exec_up.sh -n dnode2 -s stop -x SIGINT @@ -766,5 +638,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT system sh/exec_up.sh -n dnode6 -s stop -x SIGINT system sh/exec_up.sh -n dnode7 -s stop -x SIGINT system sh/exec_up.sh -n dnode8 -s stop -x SIGINT - - diff --git a/tests/script/unique/cluster/balance3.sim b/tests/script/unique/cluster/balance3.sim index 76ea380e8e..1e66fcf253 100644 --- a/tests/script/unique/cluster/balance3.sim +++ b/tests/script/unique/cluster/balance3.sim @@ -1,14 +1,5 @@ system sh/stop_dnodes.sh - - - - - - - - - system sh/deploy.sh -n dnode1 -i 1 system sh/deploy.sh -n dnode2 -i 2 system sh/deploy.sh -n dnode3 -i 3 @@ -188,16 +179,8 @@ endi system sh/exec_up.sh -n dnode2 -s stop -x SIGINT print ============================== step4 -print ========= start dnode2 -sleep 3000 -system sh/deploy.sh -n dnode2 -i 2 -system sh/cfg.sh -n dnode2 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode2 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode2 -c clog -v 1 -system sh/cfg.sh -n dnode2 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname2 -system sh/exec_up.sh -n dnode2 -s start +sql create dnode $hostname5 +system sh/exec_up.sh -n dnode5 -s start sleep 10000 $x = 0 @@ -210,14 +193,14 @@ show4: sql show dnodes -x show4 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes -if $dnode2Vnodes != 2 then +if $dnode5Vnodes != 2 then goto show4 endi @@ -236,8 +219,8 @@ show5: sql show dnodes -x show5 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes $dnode3Vnodes = $data2_3 print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 @@ -246,7 +229,7 @@ print dnode4 $dnode4Vnodes if $dnode1Vnodes != 1 then goto show5 endi -if $dnode2Vnodes != 1 then +if $dnode5Vnodes != 1 then goto show5 endi if $dnode3Vnodes != null then @@ -256,20 +239,11 @@ if $dnode4Vnodes != 1 then goto show5 endi - system sh/exec_up.sh -n dnode3 -s stop -x SIGINT print ============================== step6 -print ========= start dnode3 -sleep 3000 -system sh/deploy.sh -n dnode3 -i 3 -system sh/cfg.sh -n dnode3 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode3 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode3 -c clog -v 1 -system sh/cfg.sh -n dnode3 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname3 -system sh/exec_up.sh -n dnode3 -s start +sql create dnode $hostname6 +system sh/exec_up.sh -n dnode6 -s start sleep 9000 $x = 0 @@ -282,14 +256,14 @@ show6: sql show dnodes -x show6 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes -if $dnode3Vnodes != 2 then +if $dnode6Vnodes != 2 then goto show6 endi @@ -308,20 +282,20 @@ show7: sql show dnodes -x show7 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes $dnode4Vnodes = $data2_4 print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes if $dnode1Vnodes != 1 then goto show7 endi -if $dnode2Vnodes != 1 then +if $dnode5Vnodes != 1 then goto show7 endi -if $dnode3Vnodes != 1 then +if $dnode6Vnodes != 1 then goto show7 endi if $dnode4Vnodes != null then @@ -331,16 +305,8 @@ endi system sh/exec_up.sh -n dnode4 -s stop -x SIGINT print ============================== step8 -print ========= start dnode4 -sleep 3000 -system sh/deploy.sh -n dnode4 -i 4 -system sh/cfg.sh -n dnode4 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode4 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode4 -c clog -v 1 -system sh/cfg.sh -n dnode4 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname4 -system sh/exec_up.sh -n dnode4 -s start +sql create dnode $hostname7 +system sh/exec_up.sh -n dnode7 -s start sleep 9000 $x = 0 @@ -353,14 +319,14 @@ show8: sql show dnodes -x show8 $dnode1Vnodes = $data2_1 print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes -if $dnode4Vnodes != 2 then +if $dnode7Vnodes != 2 then goto show8 endi @@ -382,39 +348,26 @@ show9: return -1 endi sql show dnodes -x show9 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes -if $dnode1Vnodes != null then +if $dnode5Vnodes != 1 then goto show9 endi -if $dnode2Vnodes != 1 then +if $dnode6Vnodes != 1 then goto show9 endi -if $dnode3Vnodes != 1 then - goto show9 -endi -if $dnode4Vnodes != 1 then +if $dnode7Vnodes != 1 then goto show9 endi print ============================== step10 -print ========= start dnode1 -sleep 3000 -system sh/deploy.sh -n dnode1 -i 1 -system sh/cfg.sh -n dnode1 -c numOfMPeers -v 3 -system sh/cfg.sh -n dnode1 -c numOfTotalVnodes -v 4 -system sh/cfg.sh -n dnode1 -c clog -v 1 -system sh/cfg.sh -n dnode1 -c mgmtEqualVnodeNum -v 0 -sleep 3000 -sql create dnode $hostname1 -system sh/exec_up.sh -n dnode1 -s start +sql create dnode $hostname8 +system sh/exec_up.sh -n dnode8 -s start sleep 9000 $x = 0 @@ -425,16 +378,16 @@ show10: return -1 endi sql show dnodes -x show10 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes +$dnode5Vnodes = $data2_5 +print dnode5 $dnode5Vnodes +$dnode6Vnodes = $data2_6 +print dnode6 $dnode6Vnodes +$dnode7Vnodes = $data2_7 +print dnode7 $dnode7Vnodes +$dnode8Vnodes = $data2_8 +print dnode8 $dnode8Vnodes -if $dnode1Vnodes != 2 then +if $dnode8Vnodes != 2 then goto show10 endi @@ -488,48 +441,15 @@ endi # goto show11 #endi -print ============================== step12 -print ========= drop dnode1 -sql drop dnode $hostname1 -sleep 10000 - -$x = 0 -show12: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show12 -$dnode1Vnodes = $data2_1 -print dnode1 $dnode1Vnodes -$dnode2Vnodes = $data2_2 -print dnode2 $dnode2Vnodes -$dnode3Vnodes = $data2_3 -print dnode3 $dnode3Vnodes -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes - -if $dnode1Vnodes != null then - goto show12 -endi -if $dnode2Vnodes != 0 then - goto show12 -endi -if $dnode3Vnodes != 0 then - goto show12 -endi -if $dnode4Vnodes != 0 then - goto show12 -endi - system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step13 +sql reset query cache +sleep 1000 + print ========= check data -sql use c_b3_d1 -sql select * from c_b3_t1 order by t desc +sql select * from c_b3_d1.c_b3_t1 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 11 then return -1 @@ -547,8 +467,7 @@ if $data41 != 15 then return -1 endi -sql use c_b3_d2 -sql select * from c_b3_t2 order by t desc +sql select * from c_b3_d2.c_b3_t2 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 21 then @@ -567,8 +486,7 @@ if $data41 != 25 then return -1 endi -sql use c_b3_d3 -sql select * from c_b3_t3 order by t desc +sql select * from c_b3_d3.c_b3_t3 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 31 then return -1 @@ -586,8 +504,7 @@ if $data41 != 35 then return -1 endi -sql use c_b3_d4 -sql select * from c_b3_t4 order by t desc +sql select * from c_b3_d4.c_b3_t4 order by t desc print $data01 $data11 $data21 $data31 $data41 if $data01 != 41 then return -1 @@ -615,5 +532,3 @@ system sh/exec_up.sh -n dnode5 -s stop -x SIGINT system sh/exec_up.sh -n dnode6 -s stop -x SIGINT system sh/exec_up.sh -n dnode7 -s stop -x SIGINT system sh/exec_up.sh -n dnode8 -s stop -x SIGINT - - diff --git a/tests/script/unique/cluster/testSuite.sim b/tests/script/unique/cluster/testSuite.sim index 74fa2cb271..34cdda85dd 100644 --- a/tests/script/unique/cluster/testSuite.sim +++ b/tests/script/unique/cluster/testSuite.sim @@ -1,5 +1,3 @@ run unique/cluster/balance1.sim run unique/cluster/balance2.sim run unique/cluster/balance3.sim -run unique/cluster/balance1_bug.sim -run unique/cluster/balance1_single.sim \ No newline at end of file From 87fdb0eaf276a31e985dfeaf3333220136509c7c Mon Sep 17 00:00:00 2001 From: slguan Date: Wed, 6 May 2020 20:20:57 +0800 Subject: [PATCH 14/21] read tsdbid error in cfg file --- src/vnode/src/vnodeMain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index f9904f7fa8..2c914de20f 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -184,6 +184,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { pVnode->status = TAOS_VN_STATUS_INIT; pVnode->refCount = 1; pVnode->version = 0; + pVnode->tsdbCfg.tsdbId = pVnode->vgId; taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode)); int32_t code = vnodeReadCfg(pVnode); From a83824eccd46228faf6945f987317f2abd9d6e8d Mon Sep 17 00:00:00 2001 From: slguan Date: Wed, 6 May 2020 22:56:25 +0800 Subject: [PATCH 15/21] add log --- src/mnode/src/mgmtDnode.c | 1 + src/mnode/src/mgmtVgroup.c | 5 +---- tests/script/unique/cluster/balance1.sim | 4 ++-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/mnode/src/mgmtDnode.c b/src/mnode/src/mgmtDnode.c index b041d862cf..bb98e1c3e6 100644 --- a/src/mnode/src/mgmtDnode.c +++ b/src/mnode/src/mgmtDnode.c @@ -426,6 +426,7 @@ static int32_t mgmtDropDnodeByEp(char *ep) { return TSDB_CODE_NO_REMOVE_MASTER; } + mPrint("dnode:%d, start to drop it", pDnode->dnodeId); #ifndef _SYNC return mgmtDropDnode(pDnode); #else diff --git a/src/mnode/src/mgmtVgroup.c b/src/mnode/src/mgmtVgroup.c index 2162230606..f83268e760 100644 --- a/src/mnode/src/mgmtVgroup.c +++ b/src/mnode/src/mgmtVgroup.c @@ -160,10 +160,7 @@ static int32_t mgmtVgroupActionUpdate(SSdbOper *pOper) { mgmtDecVgroupRef(pVgroup); - mTrace("vgId:%d, is updated, numOfVnode:%d", pVgroup->vgId, pVgroup->numOfVnodes); - if (pDb) { - mTrace("tables:%d", pDb->cfg.maxTables); - } + mTrace("vgId:%d, is updated, numOfVnode:%d tables:%d", pVgroup->vgId, pVgroup->numOfVnodes, pDb == NULL ? 0 : pDb->cfg.maxTables); return TSDB_CODE_SUCCESS; } diff --git a/tests/script/unique/cluster/balance1.sim b/tests/script/unique/cluster/balance1.sim index 97d5bb468a..50f56688f3 100644 --- a/tests/script/unique/cluster/balance1.sim +++ b/tests/script/unique/cluster/balance1.sim @@ -92,7 +92,7 @@ $x = 0 show2: $x = $x + 1 sleep 2000 - if $x == 30 then + if $x == 20 then return -1 endi sql show dnodes -x show2 @@ -134,7 +134,7 @@ $x = 0 show4: $x = $x + 1 sleep 2000 - if $x == 30 then + if $x == 20 then return -1 endi sql show dnodes -x show4 From 3582b2380744adc10757ac357127891951d817ba Mon Sep 17 00:00:00 2001 From: slguan Date: Wed, 6 May 2020 23:47:05 +0800 Subject: [PATCH 16/21] scripts --- tests/script/jenkins/basic.txt | 63 +++++++++ tests/script/jenkins/basic1.txt | 11 -- tests/script/unique/account/authority.sim | 3 +- tests/script/unique/account/testSuite.sim | 2 +- tests/script/unique/cluster/balance2.sim | 159 +--------------------- tests/script/uniqueSuite.sim | 5 - 6 files changed, 68 insertions(+), 175 deletions(-) create mode 100644 tests/script/jenkins/basic.txt delete mode 100644 tests/script/jenkins/basic1.txt delete mode 100644 tests/script/uniqueSuite.sim diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt new file mode 100644 index 0000000000..81f6bc55f7 --- /dev/null +++ b/tests/script/jenkins/basic.txt @@ -0,0 +1,63 @@ +cd ../../debug; cmake .. +#cd ../../debug; make clean +cd ../../debug; make + +cd ../../../debug; cmake .. +#cd ../../../debug; make clean +cd ../../../debug; make + +./test.sh -u -f unique/account/account_create.sim +./test.sh -u -f unique/account/account_delete.sim +./test.sh -u -f unique/account/account_len.sim +./test.sh -u -f unique/account/authority.sim +./test.sh -u -f unique/account/basic.sim +./test.sh -u -f unique/account/paras.sim +./test.sh -u -f unique/account/pass_alter.sim +./test.sh -u -f unique/account/pass_len.sim +./test.sh -u -f unique/account/usage.sim +./test.sh -u -f unique/account/user_create.sim +./test.sh -u -f unique/account/user_len.sim + +#big + +./test.sh -u -f unique/cluster/balance1.sim +./test.sh -u -f unique/cluster/balance2.sim +./test.sh -u -f unique/cluster/balance3.sim + +./test.sh -u -f unique/column/replica3.sim + +./test.sh -u -f unique/db/replica_add12.sim +./test.sh -u -f unique/db/replica_add13.sim +./test.sh -u -f unique/db/replica_add23.sim +./test.sh -u -f unique/db/replica_reduce21.sim +./test.sh -u -f unique/db/replica_reduce32.sim +./test.sh -u -f unique/db/replica_reduce31.sim +./test.sh -u -f unique/db/replica_part.sim + +./test.sh -u -f unique/dnode/balance1.sim +./test.sh -u -f unique/dnode/balance2.sim +./test.sh -u -f unique/dnode/balance3.sim +./test.sh -u -f unique/dnode/balancex.sim +./test.sh -u -f unique/dnode/offline1.sim +./test.sh -u -f unique/dnode/offline2.sim + +./test.sh -u -f unique/http/admin.sim + +#import + +#metrics + +./test.sh -u -f unique/mnode/mgmt22.sim +./test.sh -u -f unique/mnode/mgmt23.sim +./test.sh -u -f unique/mnode/mgmt24.sim +./test.sh -u -f unique/mnode/mgmt25.sim +./test.sh -u -f unique/mnode/mgmt26.sim +./test.sh -u -f unique/mnode/mgmt33.sim +./test.sh -u -f unique/mnode/mgmt34.sim + +#stream + +#table + +./test.sh -u -f unique/vnode/replica2_basic2.sim +./test.sh -u -f unique/vnode/replica3_basic.sim \ No newline at end of file diff --git a/tests/script/jenkins/basic1.txt b/tests/script/jenkins/basic1.txt deleted file mode 100644 index ef6d4e239b..0000000000 --- a/tests/script/jenkins/basic1.txt +++ /dev/null @@ -1,11 +0,0 @@ -./test.sh -f general/user/basic1.sim - -./test.sh -f general/db/basic1.sim -./test.sh -f general/db/basic2.sim -./test.sh -f general/db/basic3.sim -./test.sh -f general/db/basic4.sim -./test.sh -f general/db/basic5.sim - -./test.sh -f general/table/basic1.sim -./test.sh -f general/table/basic2.sim -./test.sh -f general/table/basic3.sim \ No newline at end of file diff --git a/tests/script/unique/account/authority.sim b/tests/script/unique/account/authority.sim index e6532458f0..4198f2c333 100644 --- a/tests/script/unique/account/authority.sim +++ b/tests/script/unique/account/authority.sim @@ -227,7 +227,8 @@ print ============= step6 sql close sql connect owrite sleep 2000 - +sql reset query cache +sleep 1000 sql create database d1 sql create database d3 sql create table d1.t1 (ts timestamp, i int) diff --git a/tests/script/unique/account/testSuite.sim b/tests/script/unique/account/testSuite.sim index 38856196c2..9d4141cfe0 100644 --- a/tests/script/unique/account/testSuite.sim +++ b/tests/script/unique/account/testSuite.sim @@ -4,7 +4,7 @@ run unique/account/account_len.sim run unique/account/authority.sim run unique/account/basic.sim run unique/account/paras.sim -#run unique/account/pass_alter.sim +run unique/account/pass_alter.sim run unique/account/pass_len.sim run unique/account/usage.sim run unique/account/user_create.sim diff --git a/tests/script/unique/cluster/balance2.sim b/tests/script/unique/cluster/balance2.sim index af77db3ce6..04ab5f8fe4 100644 --- a/tests/script/unique/cluster/balance2.sim +++ b/tests/script/unique/cluster/balance2.sim @@ -357,168 +357,13 @@ print dnode1 ==> $dnode1Role print dnode4 ==> $dnode4Role print dnode5 ==> $dnode5Role -system sh/exec_up.sh -n dnode1 -s stop -x SIGINT - -print ============================== step7 -print ========= start dnode6 -sql create dnode $hostname6 -system sh/exec_up.sh -n dnode6 -s start -sleep 9000 - -sql show mnodes -$dnode1Role = $data2_1 -$dnode4Role = $data2_4 -$dnode5Role = $data2_5 -$dnode6Role = $data2_6 -print dnode1 ==> $dnode1Role -print dnode4 ==> $dnode4Role -print dnode5 ==> $dnode5Role -print dnode6 ==> $dnode6Role - -$x = 0 -show7: - sql show mnodes - $dnode4Role = $data2_4 - $dnode5Role = $data2_5 - $dnode6Role = $data2_6 - print dnode4 ==> $dnode4Role - print dnode5 ==> $dnode5Role - print dnode6 ==> $dnode6Role - - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show7 - -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes -$dnode5Vnodes = $data2_5 -print dnode5 $dnode5Vnodes -$dnode6Vnodes = $data2_6 -print dnode6 $dnode6Vnodes - -if $dnode4Vnodes != 2 then - goto show7 -endi -if $dnode5Vnodes != 2 then - goto show7 -endi -if $dnode6Vnodes != 2 then - goto show7 -endi - -print ============================== step8 -print ========= add db4 - -sql create database c_b2_d4 replica 2 tables 4 -sql use c_b2_d4 -sql create table c_b2_t4 (t timestamp, i int) -sql insert into c_b2_t4 values(1520000020045, 45) -sql insert into c_b2_t4 values(1520000021044, 44) -sql insert into c_b2_t4 values(1520000022043, 43) -sql insert into c_b2_t4 values(1520000023042, 42) -sql insert into c_b2_t4 values(1520000024041, 41) - -sql create dnode $hostname7 -system sh/exec_up.sh -n dnode7 -s start -sleep 9000 - -sql show mnodes -$dnode4Role = $data2_4 -$dnode5Role = $data2_5 -$dnode6Role = $data2_6 -$dnode7Role = $data2_7 -print dnode4 ==> $dnode4Role -print dnode5 ==> $dnode5Role -print dnode6 ==> $dnode6Role -print dnode7 ==> $dnode7Role - -$x = 0 -show8: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show8 -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes -$dnode5Vnodes = $data2_5 -print dnode5 $dnode5Vnodes -$dnode6Vnodes = $data2_6 -print dnode6 $dnode6Vnodes -$dnode7Vnodes = $data2_7 -print dnode7 $dnode7Vnodes - -if $dnode4Vnodes != 2 then - goto show8 -endi -if $dnode5Vnodes != 2 then - goto show8 -endi -if $dnode6Vnodes != 2 then - goto show8 -endi -if $dnode7Vnodes != 2 then - goto show8 -endi - -print ============================== step11 - -sql create database c_b2_d5 replica 2 tables 4 -sql use c_b2_d5; -sql create table c_b2_t5 (t timestamp, i int) -sql insert into c_b2_t5 values(1520000020055, 55) -sql insert into c_b2_t5 values(1520000021054, 54) -sql insert into c_b2_t5 values(1520000022053, 53) -sql insert into c_b2_t5 values(1520000023052, 52) -sql insert into c_b2_t5 values(1520000024051, 51) - -sql create database c_b2_d6 replica 2 tables 4 -sql use c_b2_d6 -sql create table c_b2_t6 (t timestamp, i int) -sql insert into c_b2_t6 values(1520000020065, 65) -sql insert into c_b2_t6 values(1520000021064, 64) -sql insert into c_b2_t6 values(1520000022063, 63) -sql insert into c_b2_t6 values(1520000023062, 62) -sql insert into c_b2_t6 values(1520000024061, 61) - -$x = 0 -show11: - $x = $x + 1 - sleep 2000 - if $x == 30 then - return -1 - endi -sql show dnodes -x show11 -$dnode4Vnodes = $data2_4 -print dnode4 $dnode4Vnodes -$dnode5Vnodes = $data2_5 -print dnode5 $dnode5Vnodes -$dnode6Vnodes = $data2_6 -print dnode6 $dnode6Vnodes -$dnode7Vnodes = $data2_7 -print dnode7 $dnode7Vnodes - -if $dnode4Vnodes != 1 then - goto show11 -endi -if $dnode5Vnodes != 1 then - goto show11 -endi -if $dnode6Vnodes != 1 then - goto show11 -endi -if $dnode7Vnodes != 1 then - goto show11 -endi +#system sh/exec_up.sh -n dnode1 -s stop -x SIGINT print ============================== step12 print ========= check data sql reset query cache +sleep 1000 sql select * from c_b2_d1.c_b2_t1 order by t desc print $data01 $data11 $data21 $data31 $data41 diff --git a/tests/script/uniqueSuite.sim b/tests/script/uniqueSuite.sim deleted file mode 100644 index 0a3d57c27e..0000000000 --- a/tests/script/uniqueSuite.sim +++ /dev/null @@ -1,5 +0,0 @@ -################################# - -run unique/mnode/testSuite.sim - -################################## From 5f132980e81b19ffb4c48049f000dc5dc87c01af Mon Sep 17 00:00:00 2001 From: slguan Date: Thu, 7 May 2020 10:46:42 +0800 Subject: [PATCH 17/21] if sched is not ready, will cause a deadlock --- src/mnode/src/mgmtDServer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mnode/src/mgmtDServer.c b/src/mnode/src/mgmtDServer.c index 726554e490..1e820be0e9 100644 --- a/src/mnode/src/mgmtDServer.c +++ b/src/mnode/src/mgmtDServer.c @@ -52,14 +52,14 @@ int32_t mgmtInitDServer() { rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.afp = mgmtDServerRetrieveAuth; + tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS"); + tsMgmtDServerRpc = rpcOpen(&rpcInit); if (tsMgmtDServerRpc == NULL) { mError("failed to init server connection to dnode"); return -1; } - tsMgmtDServerQhandle = taosInitScheduler(tsMaxShellConns, 1, "MS"); - mPrint("server connection to dnode is opened"); return 0; } From 32d2570c80d5e44f3e8f372b7c178c628573162f Mon Sep 17 00:00:00 2001 From: liu0x54 Date: Thu, 7 May 2020 05:07:16 +0000 Subject: [PATCH 18/21] [TD-228] fix python connector to support binary interface change --- src/connector/python/linux/python3/taos/cinterface.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/connector/python/linux/python3/taos/cinterface.py b/src/connector/python/linux/python3/taos/cinterface.py index 77001609b6..6ef54f1ba5 100644 --- a/src/connector/python/linux/python3/taos/cinterface.py +++ b/src/connector/python/linux/python3/taos/cinterface.py @@ -146,6 +146,7 @@ class CTaosInterface(object): libtaos.taos_errstr.restype = ctypes.c_char_p libtaos.taos_subscribe.restype = ctypes.c_void_p libtaos.taos_consume.restype = ctypes.c_void_p + libtaos.taos_fetch_lengths.restype = ctypes.c_void_p def __init__(self, config=None): ''' @@ -314,6 +315,8 @@ class CTaosInterface(object): isMicro = (CTaosInterface.libtaos.taos_result_precision(result) == FieldType.C_TIMESTAMP_MICRO) blocks = [None] * len(fields) + fieldL = CTaosInterface.libtaos.taos_fetch_lengths(result) + fieldLen = [ele for ele in ctypes.cast(fieldL, ctypes.POINTER(ctypes.c_int))[:len(fields)]] for i in range(len(fields)): data = ctypes.cast(pblock, ctypes.POINTER(ctypes.c_void_p))[i] if data == None: @@ -323,7 +326,7 @@ class CTaosInterface(object): if fields[i]['type'] not in _CONVERT_FUNC: raise DatabaseError("Invalid data type returned from database") - blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fields[i]['bytes'], isMicro) + blocks[i] = _CONVERT_FUNC[fields[i]['type']](data, num_of_rows, fieldLen[i], isMicro) return blocks, abs(num_of_rows) From 6d9caf0e5cf2f9c6c071f8737a4ca0c31328a61a Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Thu, 7 May 2020 13:52:16 +0800 Subject: [PATCH 19/21] add description regarding how to run and add test case. [TD-236] --- README.md | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) diff --git a/README.md b/README.md index 280cf73ba0..158ae040fa 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,251 @@ TDengine provides abundant developing tools for users to develop on TDengine. Fo - [RESTful API](https://www.taosdata.com/en/documentation/connector/#RESTful-Connector) - [Node.js](https://www.taosdata.com/en/documentation/connector/#Node.js-Connector) +# How to run the test cases and how to add a new test case? + +### Prepare development environment + +1. sudo apt install + build-essential cmake net-tools python-pip python-setuptools python3-pip + python3-setuptools valgrind + +2. git clone ; cd TDengine + +3. mkdir debug; cd debug; cmake ..; make ; sudo make install + +4. pip install src/connector/python/linux/python2 ; pip3 install + src/connector/python/linux/python3 + +### How to run TSIM test suite + +1. cd \/tests/script + +2. sudo ./test.sh + +### How to run Python test suite + +1. cd \/tests/pytest + +2. ./smoketest.sh \# for smoke test + +3. ./smoketest.sh -g \# for memory leak detection test with valgrind + +4. ./fulltest.sh \# for full test + +> Note1: TDengine daemon's configuration and data files are stored in +> \/sim directory. As a historical design, it's same place with +> TSIM script. So after the TSIM script ran with sudo privilege, the directory +> has been used by TSIM then the python script cannot write it by a normal +> user. You need to remove the directory completely first before running the +> Python test case. We should consider using two different locations to store +> for TSIM and Python script. + +> Note2: if you need to debug crash problem with a core dump, you need +> manually edit smoketest.sh or fulltest.sh to add "ulimit -c unlimited" +> before the script line. Then you can look for the core file in +> \/tests/pytest after the program crash. + +### How to add a new test case + +**1. add a new TSIM test cases:** + +TSIM test cases are now included in the new development branch and can be +added to the TDengine/tests/script/test.sh script based on the manual test +methods necessary to add test cases as described above. + +**2. add a new Python test cases:** + +**2.1 Please refer to \/tests/pytest/insert/basic.py to add a new +test case.** The new test case must implement 3 functions, where self.init() +and self.stop() simply copy the contents of insert/basic.py and the test +logic is implemented in self.run(). You can refer to the code in the util +directory for more information. + +**2.2 Edit smoketest.sh to add the path and filename of the new test case** + +Note: The Python test framework may continue to be improved in the future, +hopefully, to provide more functionality and ease of writing test cases. The +method of writing the test case above does not exclude that it will also be +affected. + +**2.3 What test.py does in detail:** + +test.py is the entry program for test case execution and monitoring. + +test.py has the following functions. + +\-f --file, Specifies the test case file name to be executed +-p --path, Specifies deployment path + +\-m --master, Specifies the master server IP for cluster deployment +-c--cluster, test cluster function +-s--stop, terminates all running nodes + +\-g--valgrind, load valgrind for memory leak detection test + +\-h--help, display help + +**2.4 What util/log.py does in detail:** + +log.py is quite simple, the main thing is that you can print the output in +different colors as needed. The success() should be called for successful +test case execution and the success() will print green text. The exit() will +print red text and exit the program, exit() should be called for test +failure. + +**util/log.py** + +... + +    def info(self, info): + +        printf("%s %s" % (datetime.datetime.now(), info)) + +  + +    def sleep(self, sec): + +        printf("%s sleep %d seconds" % (datetime.datetime.now(), sec)) + +        time.sleep(sec) + +  + +    def debug(self, err): + +        printf("\\033[1;36m%s %s\\033[0m" % (datetime.datetime.now(), err)) + +  + +    def success(self, info): + +        printf("\\033[1;32m%s %s\\033[0m" % (datetime.datetime.now(), info)) + +  + +    def notice(self, err): + +        printf("\\033[1;33m%s %s\\033[0m" % (datetime.datetime.now(), err)) + +  + +    def exit(self, err): + +        printf("\\033[1;31m%s %s\\033[0m" % (datetime.datetime.now(), err)) + +        sys.exit(1) + +  + +    def printNoPrefix(self, info): + +        printf("\\033[1;36m%s\\033[0m" % (info) + +... + +**2.5 What util/sql.py does in detail:** + +SQL.py is mainly used to execute SQL statements to manipulate the database, +and the code is extracted and commented as follows: + +**util/sql.py** + +\# prepare() is mainly used to set up the environment for testing table and +data, and to set up the database db for testing. do not call prepare() if you +need to test the database operation command. + +def prepare(self): + +tdLog.info("prepare database:db") + +self.cursor.execute('reset query cache') + +self.cursor.execute('drop database if exists db') + +self.cursor.execute('create database db') + +self.cursor.execute('use db') + +... + +\# query() is mainly used to execute select statements for normal syntax input + +def query(self, sql): + +... + +\# error() is mainly used to execute the select statement with the wrong syntax +input, the error will be caught as a reasonable behavior, if not caught it will +prove that the test failed + +def error() + +... + +\# checkRows() is used to check the number of returned lines after calling +query(select ...) after calling the query(select ...) to check the number of +rows of returned results. + +def checkRows(self, expectRows): + +... + +\# checkData() is used to check the returned result data after calling +query(select ...) after the query(select ...) is called, failure to meet +expectation is + +def checkData(self, row, col, data): + +... + +\# getData() returns the result data after calling query(select ...) to return +the resulting data after calling query(select ...) + +def getData(self, row, col): + +... + +\# execute() used to execute sql and return the number of affected rows + +def execute(self, sql): + +... + +\# executeTimes() Multiple executions of the same sql statement + +def executeTimes(self, sql, times): + +... + +\# CheckAffectedRows() Check if the number of affected rows is as expected + +def checkAffectedRows(self, expectAffectedRows): + +... + +> Note: Both Python2 and Python3 are currently supported by the Python test +> case. Since Python2 is no longer officially supported by January 1, 2020, it +> is recommended that subsequent test case development be guaranteed to run +> correctly on Python3. For Python2, please consider being compatible if +> appropriate without additional +> burden.   + +### CI Covenant submission adoption principle. + +- Every commit / PR compilation must pass. Currently, the warning is treated + as an error, so the warning must also be resolved. + +- Test cases that already exist must pass. + +- Because CI is very important to support build and automatically test + procedure, it is necessary to manually test the test case before adding it + and do as many iterations as possible to ensure that the test case provides + stable and reliable test results when added. + +> Note: In the future, according to the requirements and test development +> progress will add stress testing, performance testing, code style, +> and other features based on functional testing. + ### Third Party Connectors The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them. From 8a4d27127a2898b72a29ef2c9361eb6af1205c3d Mon Sep 17 00:00:00 2001 From: chang Date: Thu, 7 May 2020 14:01:12 +0800 Subject: [PATCH 20/21] docs: fix wrong wrod "ater" to "alter" --- src/mnode/src/mgmtUser.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mnode/src/mgmtUser.c b/src/mnode/src/mgmtUser.c index b4dd58cb3b..ecd3c217ca 100644 --- a/src/mnode/src/mgmtUser.c +++ b/src/mnode/src/mgmtUser.c @@ -396,7 +396,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { code = mgmtUpdateUser(pUser); mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } @@ -439,13 +439,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) { code = mgmtUpdateUser(pUser); mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code)); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); code = TSDB_CODE_NO_RIGHTS; } mgmtSendSimpleResp(pMsg->thandle, code); } else { - mError("user:%s, no rights to ater user", pOperUser->user); + mError("user:%s, no rights to alter user", pOperUser->user); mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS); } From 9b3844ea91b7f744d0d8caac1fb320575e6f9e0e Mon Sep 17 00:00:00 2001 From: slguan Date: Thu, 7 May 2020 14:29:06 +0800 Subject: [PATCH 21/21] a dead lock while tsdb commit --- src/tsdb/src/tsdbFile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tsdb/src/tsdbFile.c b/src/tsdb/src/tsdbFile.c index 0c1b9e314e..b1228b0230 100644 --- a/src/tsdb/src/tsdbFile.c +++ b/src/tsdb/src/tsdbFile.c @@ -180,7 +180,7 @@ void tsdbFitRetention(STsdbRepo *pRepo) { int mfid = tsdbGetKeyFileId(taosGetTimestamp(pRepo->config.precision), pRepo->config.daysPerFile, pRepo->config.precision); - while (pGroup[0].fileId < mfid) { + while (pFileH->numOfFGroups > 0 && pGroup[0].fileId < mfid) { tsdbRemoveFileGroup(pFileH, pGroup[0].fileId); } }