From 4bd22308313a88b2700323d8c2eecb5f1697a89d Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Fri, 7 Feb 2025 18:27:39 +0800 Subject: [PATCH 01/12] Fix some configs' errors and remove some configs from global config list. --- source/common/src/tglobal.c | 14 ++++++-------- source/util/src/tconfig.c | 33 +++++---------------------------- 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 84e0ffb313..bd1cb040f3 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -713,11 +713,11 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { tsNumOfRpcThreads = tsNumOfCores / 2; tsNumOfRpcThreads = TRANGE(tsNumOfRpcThreads, 2, TSDB_MAX_RPC_THREADS); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "numOfRpcThreads", tsNumOfRpcThreads, 1, 1024, CFG_SCOPE_BOTH, CFG_DYN_BOTH_LAZY, - CFG_CATEGORY_GLOBAL)); + CFG_CATEGORY_LOCAL)); tsNumOfRpcSessions = TRANGE(tsNumOfRpcSessions, 100, 100000); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "numOfRpcSessions", tsNumOfRpcSessions, 1, 100000, CFG_SCOPE_BOTH, - CFG_DYN_BOTH_LAZY, CFG_CATEGORY_GLOBAL)); + CFG_DYN_BOTH_LAZY, CFG_CATEGORY_LOCAL)); tsShareConnLimit = TRANGE(tsShareConnLimit, 1, 512); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "shareConnLimit", tsShareConnLimit, 1, 512, CFG_SCOPE_BOTH, CFG_DYN_BOTH_LAZY, @@ -734,7 +734,7 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { tsNumOfTaskQueueThreads = TMAX(tsNumOfTaskQueueThreads, 16); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "numOfTaskQueueThreads", tsNumOfTaskQueueThreads, 4, 1024, CFG_SCOPE_CLIENT, - CFG_DYN_CLIENT_LAZY, CFG_CATEGORY_GLOBAL)); + CFG_DYN_CLIENT_LAZY, CFG_CATEGORY_LOCAL)); TAOS_CHECK_RETURN( cfgAddBool(pCfg, "experimental", tsExperimental, CFG_SCOPE_BOTH, CFG_DYN_BOTH_LAZY, CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddBool(pCfg, "multiResultFunctionStarReturnTags", tsMultiResultFunctionStarReturnTags, @@ -864,12 +864,12 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "numOfSnodeSharedThreads", tsNumOfSnodeStreamThreads, 2, 1024, CFG_SCOPE_SERVER, CFG_DYN_SERVER_LAZY,CFG_CATEGORY_LOCAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "numOfSnodeUniqueThreads", tsNumOfSnodeWriteThreads, 2, 1024, CFG_SCOPE_SERVER, CFG_DYN_SERVER_LAZY,CFG_CATEGORY_LOCAL)); - TAOS_CHECK_RETURN(cfgAddInt64(pCfg, "rpcQueueMemoryAllowed", tsQueueMemoryAllowed, TSDB_MAX_MSG_SIZE * RPC_MEMORY_USAGE_RATIO * 10L, INT64_MAX, CFG_SCOPE_SERVER, CFG_DYN_SERVER,CFG_CATEGORY_GLOBAL)); + TAOS_CHECK_RETURN(cfgAddInt64(pCfg, "rpcQueueMemoryAllowed", tsQueueMemoryAllowed, TSDB_MAX_MSG_SIZE * RPC_MEMORY_USAGE_RATIO * 10L, INT64_MAX, CFG_SCOPE_SERVER, CFG_DYN_SERVER,CFG_CATEGORY_LOCAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "syncElectInterval", tsElectInterval, 10, 1000 * 60 * 24 * 2, CFG_SCOPE_SERVER, CFG_DYN_NONE,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "syncHeartbeatInterval", tsHeartbeatInterval, 10, 1000 * 60 * 24 * 2, CFG_SCOPE_SERVER, CFG_DYN_NONE,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "syncHeartbeatTimeout", tsHeartbeatTimeout, 10, 1000 * 60 * 24 * 2, CFG_SCOPE_SERVER, CFG_DYN_NONE,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "syncSnapReplMaxWaitN", tsSnapReplMaxWaitN, 16, (TSDB_SYNC_SNAP_BUFFER_SIZE >> 2), CFG_SCOPE_SERVER, CFG_DYN_SERVER,CFG_CATEGORY_GLOBAL)); - TAOS_CHECK_RETURN(cfgAddInt64(pCfg, "syncLogBufferMemoryAllowed", tsLogBufferMemoryAllowed, TSDB_MAX_MSG_SIZE * 10L, INT64_MAX, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER,CFG_CATEGORY_GLOBAL)); + TAOS_CHECK_RETURN(cfgAddInt64(pCfg, "syncLogBufferMemoryAllowed", tsLogBufferMemoryAllowed, TSDB_MAX_MSG_SIZE * 10L, INT64_MAX, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER,CFG_CATEGORY_LOCAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "arbHeartBeatIntervalSec", tsArbHeartBeatIntervalSec, 1, 60 * 24 * 2, CFG_SCOPE_SERVER, CFG_DYN_SERVER,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "arbCheckSyncIntervalSec", tsArbCheckSyncIntervalSec, 1, 60 * 24 * 2, CFG_SCOPE_SERVER, CFG_DYN_SERVER,CFG_CATEGORY_GLOBAL)); @@ -947,9 +947,7 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "cacheLazyLoadThreshold", tsCacheLazyLoadThreshold, 0, 100000, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "fPrecision", tsFPrecision, 0.0f, 100000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE,CFG_CATEGORY_GLOBAL)); - SConfigItem *pItem = NULL; - TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "fPrecision"); - tsFPrecision = pItem->fval; + TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "dPrecision", tsDPrecision, 0.0f, 1000000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "maxRange", tsMaxRange, 0, 65536, CFG_SCOPE_SERVER, CFG_DYN_SERVER_LAZY,CFG_CATEGORY_GLOBAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "curRange", tsCurRange, 0, 65536, CFG_SCOPE_SERVER, CFG_DYN_SERVER_LAZY,CFG_CATEGORY_GLOBAL)); diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 9ca53c8202..ae4dcb3c76 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -97,6 +97,7 @@ int32_t cfgLoadFromArray(SConfig *pCfg, SArray *pArgs) { } int32_t cfgUpdateFromArray(SConfig *pCfg, SArray *pArgs) { + int32_t code = TSDB_CODE_SUCCESS; int32_t size = taosArrayGetSize(pArgs); for (int32_t i = 0; i < size; ++i) { SConfigItem *pItemNew = taosArrayGet(pArgs, i); @@ -108,34 +109,10 @@ int32_t cfgUpdateFromArray(SConfig *pCfg, SArray *pArgs) { (void)taosThreadMutexUnlock(&pCfg->lock); TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); } - switch (pItemNew->dtype) { - case CFG_DTYPE_BOOL: - pItemOld->bval = pItemNew->bval; - break; - case CFG_DTYPE_INT32: - pItemOld->i32 = pItemNew->i32; - break; - case CFG_DTYPE_INT64: - pItemOld->i64 = pItemNew->i64; - break; - case CFG_DTYPE_FLOAT: - case CFG_DTYPE_DOUBLE: - pItemOld->fval = pItemNew->fval; - break; - case CFG_DTYPE_STRING: - case CFG_DTYPE_DIR: - case CFG_DTYPE_LOCALE: - case CFG_DTYPE_CHARSET: - case CFG_DTYPE_TIMEZONE: - taosMemoryFree(pItemOld->str); - pItemOld->str = taosStrdup(pItemNew->str); - if (pItemOld->str == NULL) { - (void)taosThreadMutexUnlock(&pCfg->lock); - TAOS_RETURN(terrno); - } - break; - default: - break; + code = cfgSetItemVal(pItemOld, pItemNew->name, pItemNew->str, pItemNew->stype); + if (code != 0) { + (void)taosThreadMutexUnlock(&pCfg->lock); + TAOS_RETURN(code); } (void)taosThreadMutexUnlock(&pCfg->lock); From 2cbb7a7814da96e9195701b2b612829441d54d25 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Fri, 7 Feb 2025 18:49:00 +0800 Subject: [PATCH 02/12] Fix sdb config compare errors. --- include/common/tglobal.h | 1 - source/common/src/tglobal.c | 51 ----------------- source/dnode/mnode/impl/src/mndConfig.c | 74 ++++++++++++++++++++++++- 3 files changed, 73 insertions(+), 53 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 4e9a9bd801..bb3f0964de 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -326,7 +326,6 @@ int32_t tDeserializeSConfigArray(SDecoder *pDecoder, SArray *array); int32_t setAllConfigs(SConfig *pCfg); void printConfigNotMatch(SArray *array); -int32_t compareSConfigItemArrays(SArray *mArray, const SArray *dArray, SArray *diffArray); bool isConifgItemLazyMode(SConfigItem *item); int32_t taosUpdateTfsItemDisable(SConfig *pCfg, const char *value, void *pTfs); diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index bd1cb040f3..5b3a015553 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -3194,57 +3194,6 @@ _exit: return code; } -bool compareSConfigItem(const SConfigItem *item1, const SConfigItem *item2) { - switch (item1->dtype) { - case CFG_DTYPE_BOOL: - if (item1->bval != item2->bval) return false; - break; - case CFG_DTYPE_FLOAT: - if (item1->fval != item2->fval) return false; - break; - case CFG_DTYPE_INT32: - if (item1->i32 != item2->i32) return false; - break; - case CFG_DTYPE_INT64: - if (item1->i64 != item2->i64) return false; - break; - case CFG_DTYPE_STRING: - case CFG_DTYPE_DIR: - case CFG_DTYPE_LOCALE: - case CFG_DTYPE_CHARSET: - case CFG_DTYPE_TIMEZONE: - if (strcmp(item1->str, item2->str) != 0) return false; - break; - default: - return false; - } - return true; -} - -int32_t compareSConfigItemArrays(SArray *mArray, const SArray *dArray, SArray *diffArray) { - int32_t code = 0; - int32_t msz = taosArrayGetSize(mArray); - int32_t dsz = taosArrayGetSize(dArray); - - if (msz != dsz) { - return TSDB_CODE_FAILED; - } - - for (int i = 0; i < msz; i++) { - SConfigItem *mItem = (SConfigItem *)taosArrayGet(mArray, i); - SConfigItem *dItem = (SConfigItem *)taosArrayGet(dArray, i); - if (!compareSConfigItem(mItem, dItem)) { - code = TSDB_CODE_FAILED; - if (taosArrayPush(diffArray, mItem) == NULL) { - code = terrno; - return code; - } - } - } - - return code; -} - void printConfigNotMatch(SArray *array) { uError( "The global configuration parameters in the configuration file do not match those in the cluster. Please " diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 0d4265f8e7..4ce8020a72 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -40,6 +40,7 @@ static int32_t initConfigArrayFromSdb(SMnode *pMnode, SArray *array); static int32_t mndTryRebuildConfigSdb(SRpcMsg *pReq); static void cfgArrayCleanUp(SArray *array); static void cfgObjArrayCleanUp(SArray *array); +int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *diffArray); static int32_t mndConfigUpdateTrans(SMnode *pMnode, const char *name, char *pValue, ECfgDataType dtype, int32_t tsmmConfigVersion); @@ -250,7 +251,7 @@ static int32_t mndProcessConfigReq(SRpcMsg *pReq) { configRsp.cver = vObj->i32; if (configRsp.forceReadConfig) { // compare config array from configReq with current config array - if (compareSConfigItemArrays(taosGetGlobalCfg(tsCfg), configReq.array, array)) { + if (compareSConfigItemArrays(pMnode->pSdb, configReq.array, array)) { configRsp.array = array; } else { configRsp.isConifgVerified = 1; @@ -921,4 +922,75 @@ _OVER: tFreeSShowVariablesRsp(&rsp); TAOS_RETURN(code); +} + +bool compareSConfigItem(const SConfigObj *item1, SConfigItem *item2) { + switch (item1->dtype) { + case CFG_DTYPE_BOOL: + if (item1->bval != item2->bval) { + item2->bval = item1->bval; + return false; + } + break; + case CFG_DTYPE_FLOAT: + if (item1->fval != item2->fval) { + item2->fval = item1->fval; + return false; + } + break; + case CFG_DTYPE_INT32: + if (item1->i32 != item2->i32) { + item2->i32 = item1->i32; + return false; + } + break; + case CFG_DTYPE_INT64: + if (item1->i64 != item2->i64) { + item2->i64 = item1->i64; + return false; + } + break; + case CFG_DTYPE_STRING: + case CFG_DTYPE_DIR: + case CFG_DTYPE_LOCALE: + case CFG_DTYPE_CHARSET: + case CFG_DTYPE_TIMEZONE: + if (strcmp(item1->str, item2->str) != 0) { + taosMemoryFree(item2->str); + item2->str = taosStrdup(item1->str); + return false; + } + break; + default: + return false; + } + return true; +} + +int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *diffArray) { + int32_t code = 0; + int32_t dsz = taosArrayGetSize(dArray); + + for (int i = 0; i < dsz; i++) { + SConfigItem *dItem = (SConfigItem *)taosArrayGet(dArray, i); + SConfigObj *mObj = sdbAcquire(pMnode->pSdb, SDB_CFG, dItem->name); + if (mObj == NULL) { + code = terrno; + mError("failed to acquire config:%s from sdb, since %s", dItem->name, tstrerror(code)); + } + if (!compareSConfigItem(mObj, dItem)) { + code = TSDB_CODE_FAILED; + if (taosArrayPush(diffArray, dItem) == NULL) { + sdbRelease(pMnode->pSdb, mObj); + return terrno; + } + } + if (terrno != 0) { + sdbRelease(pMnode->pSdb, mObj); + return terrno; + } + sdbRelease(pMnode->pSdb, mObj); + } + + return code; } \ No newline at end of file From 72f228fa977f9fda260b29c91272580c21c6209b Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Fri, 7 Feb 2025 18:52:54 +0800 Subject: [PATCH 03/12] Fix build errors. --- source/dnode/mnode/impl/src/mndConfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 4ce8020a72..1fb90ad1c9 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -251,7 +251,7 @@ static int32_t mndProcessConfigReq(SRpcMsg *pReq) { configRsp.cver = vObj->i32; if (configRsp.forceReadConfig) { // compare config array from configReq with current config array - if (compareSConfigItemArrays(pMnode->pSdb, configReq.array, array)) { + if (compareSConfigItemArrays(pMnode, configReq.array, array)) { configRsp.array = array; } else { configRsp.isConifgVerified = 1; From cb50badddeccc403e2b15da8ed3a8de9c0fb1490 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Fri, 7 Feb 2025 19:27:27 +0800 Subject: [PATCH 04/12] Fix crash. --- source/util/src/tconfig.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index ae4dcb3c76..74d55b979a 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -109,10 +109,40 @@ int32_t cfgUpdateFromArray(SConfig *pCfg, SArray *pArgs) { (void)taosThreadMutexUnlock(&pCfg->lock); TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); } - code = cfgSetItemVal(pItemOld, pItemNew->name, pItemNew->str, pItemNew->stype); - if (code != 0) { - (void)taosThreadMutexUnlock(&pCfg->lock); - TAOS_RETURN(code); + switch (pItemNew->dtype) { + case CFG_DTYPE_BOOL: + pItemOld->bval = pItemNew->bval; + break; + case CFG_DTYPE_INT32: + pItemOld->i32 = pItemNew->i32; + break; + case CFG_DTYPE_INT64: + pItemOld->i64 = pItemNew->i64; + break; + case CFG_DTYPE_FLOAT: + case CFG_DTYPE_DOUBLE: + pItemOld->fval = pItemNew->fval; + break; + case CFG_DTYPE_STRING: + case CFG_DTYPE_DIR: + taosMemoryFree(pItemOld->str); + pItemOld->str = taosStrdup(pItemNew->str); + if (pItemOld->str == NULL) { + (void)taosThreadMutexUnlock(&pCfg->lock); + TAOS_RETURN(terrno); + } + break; + case CFG_DTYPE_LOCALE: + case CFG_DTYPE_CHARSET: + case CFG_DTYPE_TIMEZONE: + code = cfgSetItemVal(pItemOld, pItemNew->name, pItemNew->str, pItemNew->stype); + if (code != TSDB_CODE_SUCCESS) { + (void)taosThreadMutexUnlock(&pCfg->lock); + TAOS_RETURN(code); + } + break; + default: + break; } (void)taosThreadMutexUnlock(&pCfg->lock); From e7c67a93710f0e8fad1bf2546ee01b0238654ade Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Fri, 7 Feb 2025 19:44:13 +0800 Subject: [PATCH 05/12] Add some tests. --- tests/army/alter/alterConfig.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/army/alter/alterConfig.py b/tests/army/alter/alterConfig.py index 3fd0a51576..2b85e16a90 100644 --- a/tests/army/alter/alterConfig.py +++ b/tests/army/alter/alterConfig.py @@ -176,7 +176,12 @@ class TDTestCase(TBase): def alter_err_case(self): tdSql.error(f"alter local 'audit 0'",expectErrInfo="Config not found") tdSql.error(f"alter dnode 1 'audit 1'",expectErrInfo="Invalid config option") - + + def alter_dnode_1_case(self): + tdSql.execute("alter dnode 1 'numOfRpcThreads' '5'") + tdSql.execute("alter dnode 1 'rpcQueueMemoryAllowed' '15242880'") + tdSql.execute("alter dnode 1 'syncLogBufferMemoryAllowed' '115728640'") + # run def run(self): tdLog.debug(f"start to excute {__file__}") @@ -191,6 +196,7 @@ class TDTestCase(TBase): self.alterBypassFlag() # TS-5007 self.alter_err_case() + self.alter_dnode_1_case() tdLog.success(f"{__file__} successfully executed") From d8c19b880407713fd8ae5463d184a42059335a6e Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 10:42:15 +0800 Subject: [PATCH 06/12] Fix timezone case failed. --- include/os/osTimezone.h | 1 + source/os/src/osTimezone.c | 7 +++++++ source/util/src/tconfig.c | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/include/os/osTimezone.h b/include/os/osTimezone.h index f770a9dba0..10aed0a964 100644 --- a/include/os/osTimezone.h +++ b/include/os/osTimezone.h @@ -35,6 +35,7 @@ time_t mktime_z(timezone_t, struct tm *); timezone_t tzalloc(char const *); void tzfree(timezone_t); void getTimezoneStr(char *tz); +void truncateTimezoneString(char *tz); #endif diff --git a/source/os/src/osTimezone.c b/source/os/src/osTimezone.c index cad3f426f2..4b06930118 100644 --- a/source/os/src/osTimezone.c +++ b/source/os/src/osTimezone.c @@ -872,6 +872,13 @@ END: } #endif +void truncateTimezoneString(char *tz) { + char *spacePos = strchr(tz, ' '); + if (spacePos != NULL) { + *spacePos = '\0'; + } +} + int32_t taosGetSystemTimezone(char *outTimezoneStr) { #ifdef WINDOWS char value[100] = {0}; diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 74d55b979a..a67015e11d 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -134,7 +134,14 @@ int32_t cfgUpdateFromArray(SConfig *pCfg, SArray *pArgs) { break; case CFG_DTYPE_LOCALE: case CFG_DTYPE_CHARSET: + code = cfgSetItemVal(pItemOld, pItemNew->name, pItemNew->str, pItemNew->stype); + if (code != TSDB_CODE_SUCCESS) { + (void)taosThreadMutexUnlock(&pCfg->lock); + TAOS_RETURN(code); + } + break; case CFG_DTYPE_TIMEZONE: + truncateTimezoneString(pItemNew->str); code = cfgSetItemVal(pItemOld, pItemNew->name, pItemNew->str, pItemNew->stype); if (code != TSDB_CODE_SUCCESS) { (void)taosThreadMutexUnlock(&pCfg->lock); From c1a265911e7a44aae5c47b9027eb2f4226a8075c Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 12:19:24 +0800 Subject: [PATCH 07/12] Fix ci problems. --- tests/system-test/2-query/db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system-test/2-query/db.py b/tests/system-test/2-query/db.py index 66776e0a23..895df852c7 100644 --- a/tests/system-test/2-query/db.py +++ b/tests/system-test/2-query/db.py @@ -47,7 +47,7 @@ class TDTestCase: def case2(self): tdSql.query("show variables") - tdSql.checkRows(93) + tdSql.checkRows(88) for i in range(self.replicaVar): tdSql.query("show dnode %d variables like 'debugFlag'" % (i + 1)) From cf14c30927031c306f3c8c06e59d8743d31610dc Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 13:42:20 +0800 Subject: [PATCH 08/12] Fix change ci res. --- tests/script/tsim/show/basic.sim | 2 +- tests/script/tsim/valgrind/checkError1.sim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/script/tsim/show/basic.sim b/tests/script/tsim/show/basic.sim index 7569cd832c..0acb97f1b6 100644 --- a/tests/script/tsim/show/basic.sim +++ b/tests/script/tsim/show/basic.sim @@ -230,7 +230,7 @@ endi sql_error show create stable t0; sql show variables; -if $rows != 93 then +if $rows != 88 then return -1 endi diff --git a/tests/script/tsim/valgrind/checkError1.sim b/tests/script/tsim/valgrind/checkError1.sim index 64f9cdec1f..8ac43ebaf3 100644 --- a/tests/script/tsim/valgrind/checkError1.sim +++ b/tests/script/tsim/valgrind/checkError1.sim @@ -120,7 +120,7 @@ if $rows != 3 then endi sql show variables; -if $rows != 93 then +if $rows != 88 then return -1 endi From a2f11f21c9acc524fedb6476e364f414ed530d30 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 17:07:55 +0800 Subject: [PATCH 09/12] Fix review problems. --- source/dnode/mnode/impl/src/mndConfig.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 1fb90ad1c9..4bf642f4c4 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -977,6 +977,7 @@ int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *d if (mObj == NULL) { code = terrno; mError("failed to acquire config:%s from sdb, since %s", dItem->name, tstrerror(code)); + return code; } if (!compareSConfigItem(mObj, dItem)) { code = TSDB_CODE_FAILED; From 7707e5d8ddc4474ae889d2c1e012bf320f6042f0 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 17:37:15 +0800 Subject: [PATCH 10/12] Fix some review errors. --- source/dnode/mnode/impl/src/mndConfig.c | 35 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 4bf642f4c4..5baea9c5d7 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -924,30 +924,30 @@ _OVER: TAOS_RETURN(code); } -bool compareSConfigItem(const SConfigObj *item1, SConfigItem *item2) { +int32_t compareSConfigItem(const SConfigObj *item1, SConfigItem *item2, bool *compare) { switch (item1->dtype) { case CFG_DTYPE_BOOL: if (item1->bval != item2->bval) { item2->bval = item1->bval; - return false; + compare = false; } break; case CFG_DTYPE_FLOAT: if (item1->fval != item2->fval) { item2->fval = item1->fval; - return false; + compare = false; } break; case CFG_DTYPE_INT32: if (item1->i32 != item2->i32) { item2->i32 = item1->i32; - return false; + compare = false; } break; case CFG_DTYPE_INT64: if (item1->i64 != item2->i64) { item2->i64 = item1->i64; - return false; + compare = false; } break; case CFG_DTYPE_STRING: @@ -958,18 +958,24 @@ bool compareSConfigItem(const SConfigObj *item1, SConfigItem *item2) { if (strcmp(item1->str, item2->str) != 0) { taosMemoryFree(item2->str); item2->str = taosStrdup(item1->str); - return false; + if (item2->str == NULL) { + return TSDB_CODE_OUT_OF_MEMORY; + } + compare = false; } break; default: - return false; + compare = false; + return TSDB_CODE_INVALID_CFG; } - return true; + compare = true; + return TSDB_CODE_SUCCESS } int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *diffArray) { int32_t code = 0; int32_t dsz = taosArrayGetSize(dArray); + bool compare = false; for (int i = 0; i < dsz; i++) { SConfigItem *dItem = (SConfigItem *)taosArrayGet(dArray, i); @@ -979,17 +985,20 @@ int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *d mError("failed to acquire config:%s from sdb, since %s", dItem->name, tstrerror(code)); return code; } - if (!compareSConfigItem(mObj, dItem)) { + code = compareSConfigItem(mObj, dItem, &compare); + if (code != TSDB_CODE_SUCCESS) { + sdbRelease(pMnode->pSdb, mObj); + return code; + } + + if (!compare) { code = TSDB_CODE_FAILED; if (taosArrayPush(diffArray, dItem) == NULL) { sdbRelease(pMnode->pSdb, mObj); return terrno; } } - if (terrno != 0) { - sdbRelease(pMnode->pSdb, mObj); - return terrno; - } + sdbRelease(pMnode->pSdb, mObj); } From 4011d01148214f61130e3ee557f1f0c955ecd036 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 17:42:48 +0800 Subject: [PATCH 11/12] Fix some review errors. --- source/dnode/mnode/impl/src/mndConfig.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 5baea9c5d7..fb7b76a351 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -929,25 +929,25 @@ int32_t compareSConfigItem(const SConfigObj *item1, SConfigItem *item2, bool *co case CFG_DTYPE_BOOL: if (item1->bval != item2->bval) { item2->bval = item1->bval; - compare = false; + *compare = false; } break; case CFG_DTYPE_FLOAT: if (item1->fval != item2->fval) { item2->fval = item1->fval; - compare = false; + *compare = false; } break; case CFG_DTYPE_INT32: if (item1->i32 != item2->i32) { item2->i32 = item1->i32; - compare = false; + *compare = false; } break; case CFG_DTYPE_INT64: if (item1->i64 != item2->i64) { item2->i64 = item1->i64; - compare = false; + *compare = false; } break; case CFG_DTYPE_STRING: @@ -961,14 +961,14 @@ int32_t compareSConfigItem(const SConfigObj *item1, SConfigItem *item2, bool *co if (item2->str == NULL) { return TSDB_CODE_OUT_OF_MEMORY; } - compare = false; + *compare = false; } break; default: - compare = false; + *compare = false; return TSDB_CODE_INVALID_CFG; } - compare = true; + *compare = true; return TSDB_CODE_SUCCESS } From adfab1f2b61d84543e603967949bbce19d97c722 Mon Sep 17 00:00:00 2001 From: xiao-77 Date: Sat, 8 Feb 2025 18:51:39 +0800 Subject: [PATCH 12/12] Fix some review errors. --- source/dnode/mnode/impl/src/mndConfig.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index fb7b76a351..099fff7aee 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -251,7 +251,12 @@ static int32_t mndProcessConfigReq(SRpcMsg *pReq) { configRsp.cver = vObj->i32; if (configRsp.forceReadConfig) { // compare config array from configReq with current config array - if (compareSConfigItemArrays(pMnode, configReq.array, array)) { + code = compareSConfigItemArrays(pMnode, configReq.array, array); + if (code != TSDB_CODE_SUCCESS) { + mError("failed to compare config array, since %s", tstrerror(code)); + goto _OVER; + } + if (taosArrayGetSize(array) > 0) { configRsp.array = array; } else { configRsp.isConifgVerified = 1; @@ -294,7 +299,7 @@ _OVER: } sdbRelease(pMnode->pSdb, vObj); cfgArrayCleanUp(array); - return TSDB_CODE_SUCCESS; + return code; } int32_t mndInitWriteCfg(SMnode *pMnode) { @@ -969,7 +974,7 @@ int32_t compareSConfigItem(const SConfigObj *item1, SConfigItem *item2, bool *co return TSDB_CODE_INVALID_CFG; } *compare = true; - return TSDB_CODE_SUCCESS + return TSDB_CODE_SUCCESS; } int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *diffArray) { @@ -985,6 +990,7 @@ int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *d mError("failed to acquire config:%s from sdb, since %s", dItem->name, tstrerror(code)); return code; } + code = compareSConfigItem(mObj, dItem, &compare); if (code != TSDB_CODE_SUCCESS) { sdbRelease(pMnode->pSdb, mObj); @@ -992,7 +998,6 @@ int32_t compareSConfigItemArrays(SMnode *pMnode, const SArray *dArray, SArray *d } if (!compare) { - code = TSDB_CODE_FAILED; if (taosArrayPush(diffArray, dItem) == NULL) { sdbRelease(pMnode->pSdb, mObj); return terrno;