add max tsma num opt
This commit is contained in:
parent
a2cbbba24d
commit
3566cac206
|
@ -201,6 +201,7 @@ extern char tsSmlTsDefaultName[];
|
|||
|
||||
extern int32_t tmqMaxTopicNum;
|
||||
extern int32_t tmqRowSize;
|
||||
extern int32_t tsMaxTsmaNum;
|
||||
|
||||
// wal
|
||||
extern int64_t tsWalFsyncDataSizeLimit;
|
||||
|
|
|
@ -424,6 +424,7 @@ int32_t* taosGetErrno();
|
|||
#define TSDB_CODE_MND_SMA_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x0481)
|
||||
#define TSDB_CODE_MND_INVALID_SMA_OPTION TAOS_DEF_ERROR_CODE(0, 0x0482)
|
||||
#define TSDB_CODE_MND_INVALID_DROP_TSMA TAOS_DEF_ERROR_CODE(0, 0x0485)
|
||||
#define TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED TAOS_DEF_ERROR_CODE(0, 0x0486)
|
||||
|
||||
// mnode-tag-indxe
|
||||
|
||||
|
|
|
@ -298,6 +298,8 @@ int32_t tsS3UploadDelaySec = 60;
|
|||
|
||||
bool tsExperimental = true;
|
||||
|
||||
int32_t tsMaxTsmaNum = 8;
|
||||
|
||||
#ifndef _STORAGE
|
||||
int32_t taosSetTfsCfg(SConfig *pCfg) {
|
||||
SConfigItem *pItem = cfgGetItem(pCfg, "dataDir");
|
||||
|
@ -732,6 +734,7 @@ static int32_t taosAddServerCfg(SConfig *pCfg) {
|
|||
if (cfgAddInt32(pCfg, "tmqRowSize", tmqRowSize, 1, 1000000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0)
|
||||
return -1;
|
||||
|
||||
if (cfgAddInt32(pCfg, "tsMaxTsmaNum", tsMaxTsmaNum, 0, 12, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) != 0) return -1;
|
||||
if (cfgAddInt32(pCfg, "transPullupInterval", tsTransPullupInterval, 1, 10000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER) !=
|
||||
0)
|
||||
return -1;
|
||||
|
@ -1203,6 +1206,7 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
|
|||
|
||||
tmqMaxTopicNum = cfgGetItem(pCfg, "tmqMaxTopicNum")->i32;
|
||||
tmqRowSize = cfgGetItem(pCfg, "tmqRowSize")->i32;
|
||||
tsMaxTsmaNum = cfgGetItem(pCfg, "tsMaxTsmaNum")->i32;
|
||||
|
||||
tsTransPullupInterval = cfgGetItem(pCfg, "transPullupInterval")->i32;
|
||||
tsCompactPullupInterval = cfgGetItem(pCfg, "compactPullupInterval")->i32;
|
||||
|
@ -1548,7 +1552,8 @@ static int32_t taosCfgDynamicOptionsForServer(SConfig *pCfg, char *name) {
|
|||
{"s3PageCacheSize", &tsS3PageCacheSize},
|
||||
{"s3UploadDelaySec", &tsS3UploadDelaySec},
|
||||
{"supportVnodes", &tsNumOfSupportVnodes},
|
||||
{"experimental", &tsExperimental}};
|
||||
{"experimental", &tsExperimental},
|
||||
{"maxTsmaNum", &tsMaxTsmaNum}};
|
||||
|
||||
if (taosCfgSetOption(debugOptions, tListLen(debugOptions), pItem, true) != 0) {
|
||||
taosCfgSetOption(options, tListLen(options), pItem, false);
|
||||
|
|
|
@ -1611,6 +1611,11 @@ static int32_t mndProcessCreateTSMAReq(SRpcMsg* pReq) {
|
|||
int64_t mTraceId = TRACE_GET_ROOTID(&pReq->info.traceId);
|
||||
SMCreateSmaReq createReq = {0};
|
||||
|
||||
if (sdbGetSize(pMnode->pSdb, SDB_SMA) >= tsMaxTsmaNum) {
|
||||
terrno = TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED;
|
||||
goto _OVER;
|
||||
}
|
||||
|
||||
if (tDeserializeSMCreateSmaReq(pReq->pCont, pReq->contLen, &createReq) != 0) {
|
||||
terrno = TSDB_CODE_INVALID_MSG;
|
||||
goto _OVER;
|
||||
|
|
|
@ -352,6 +352,11 @@ void sdbTraverse(SSdb *pSdb, ESdbType type, sdbTraverseFp fp, void *p1, void *p2
|
|||
*/
|
||||
int32_t sdbGetSize(SSdb *pSdb, ESdbType type);
|
||||
|
||||
/**
|
||||
* @brief get valid number of rows, removed rows are ignored
|
||||
*/
|
||||
int32_t sdbGetValidSize(SSdb* pSdb, ESdbType type);
|
||||
|
||||
/**
|
||||
* @brief Get the max id of the table, keyType of table should be INT32
|
||||
*
|
||||
|
|
|
@ -510,3 +510,7 @@ int64_t sdbGetTableVer(SSdb *pSdb, ESdbType type) {
|
|||
|
||||
return pSdb->tableVer[type];
|
||||
}
|
||||
|
||||
int32_t sdbGetValidSize(SSdb* pSdb, ESdbType type) {
|
||||
|
||||
}
|
||||
|
|
|
@ -326,6 +326,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_ALREADY_EXIST, "SMA already exists in
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_NOT_EXIST, "sma not exist")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SMA_OPTION, "Invalid sma option")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_DROP_TSMA, "Invalid drop base tsma, drop recursive tsma first")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED, "Max tsma num exceeded")
|
||||
|
||||
|
||||
// mnode-view
|
||||
|
|
|
@ -1097,8 +1097,7 @@ class TDTestCase:
|
|||
tdSql.execute('use nsdb', queryTimes=1)
|
||||
tdSql.execute(
|
||||
'create table meters(ts timestamp, c1 int, c2 int, c3 varchar(255)) tags(t1 int, t2 int)', queryTimes=1)
|
||||
self.create_tsma('tsma1', 'nsdb', 'meters', [
|
||||
'avg(c1)', 'avg(c2)'], '5m')
|
||||
self.create_tsma('tsma1', 'nsdb', 'meters', ['avg(c1)', 'avg(c2)'], '5m')
|
||||
# Invalid tsma interval, 1ms ~ 1h is allowed
|
||||
tdSql.error(
|
||||
'create tsma tsma2 on meters function(avg(c1), avg(c2)) interval(2h)', -2147471097)
|
||||
|
@ -1131,8 +1130,20 @@ class TDTestCase:
|
|||
tdSql.error(
|
||||
'create tsma tsma1 on meters function(avg(c1), avg(c2)) interval(10m)', -2147482496)
|
||||
|
||||
# max tsma num 8
|
||||
self.create_tsma('tsma2', 'nsdb', 'meters', ['avg(c1)', 'avg(c2)'], '10s')
|
||||
self.create_tsma('tsma3', 'nsdb', 'meters', ['avg(c1)', 'avg(c2)'], '100s')
|
||||
self.create_tsma('tsma4', 'nsdb', 'meters', ['avg(c1)', 'avg(c2)'], '101s')
|
||||
self.create_tsma('tsma5', 'nsdb', 'meters', ['avg(c1)', 'count(ts)'], '102s')
|
||||
self.create_tsma('tsma6', 'nsdb', 'meters', ['avg(c1)', 'avg(c2)'], '103s')
|
||||
self.create_tsma('tsma7', 'nsdb', 'meters', ['avg(c1)', 'count(c2)'], '104s')
|
||||
self.create_tsma('tsma8', 'nsdb', 'meters', ['avg(c1)', 'sum(c2)'], '105s')
|
||||
tdSql.error('create tsma tsma9 on meters function(count(ts), count(c1), sum(c2)) interval(99s)', -2147482490)
|
||||
tdSql.error('create recursive tsma tsma9 on tsma8 interval(210s)', -2147482490)
|
||||
|
||||
tdSql.execute('drop tsma tsma1', queryTimes=1)
|
||||
tdSql.execute('use test', queryTimes=1)
|
||||
time.sleep(999999)
|
||||
tdSql.execute(
|
||||
'create tsma tsma1 on nsdb.meters function(avg(c1), avg(c2)) interval(10m)', queryTimes=1)
|
||||
self.wait_for_tsma_calculation(
|
||||
|
|
Loading…
Reference in New Issue