diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 73cb2f7e27..a6bb249bc3 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -892,6 +892,9 @@ 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_NONE,CFG_CATEGORY_GLOBAL)); @@ -1998,6 +2001,8 @@ int32_t cfgDeserialize(SArray *array, char *buf, bool isGlobal) { } } } +_exit: + cJSON_Delete(pRoot); return TSDB_CODE_SUCCESS; } diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index c17d3affb3..a856a723c6 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -315,6 +315,7 @@ static void dmProcessConfigRsp(SDnodeMgmt *pMgmt, SRpcMsg *pRsp) { } else { // log the difference configurations printConfigNotMatch(configRsp.array); + dmStop(); goto _exit; } } diff --git a/source/dnode/mnode/impl/src/mndConfig.c b/source/dnode/mnode/impl/src/mndConfig.c index 5b21131df2..f7065ddf09 100644 --- a/source/dnode/mnode/impl/src/mndConfig.c +++ b/source/dnode/mnode/impl/src/mndConfig.c @@ -387,7 +387,8 @@ int32_t cfgUpdateItem(SConfigItem *pItem, SConfigObj *obj) { if (obj->str != NULL) { taosMemoryFree(pItem->str); pItem->str = taosMemoryMalloc(strlen(obj->str) + 1); - tstrncpy(pItem->str, obj->str, strlen(obj->str) + 1); + tstrncpy(pItem->str, obj->str, strlen(obj->str)); + pItem->str[strlen(obj->str)] = 0; } break; } diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 029ada0a75..7d82666c65 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -107,32 +107,31 @@ int32_t cfgUpdateFromArray(SConfig *pCfg, SArray *pArgs) { (void)taosThreadMutexUnlock(&pCfg->lock); TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); } - char value[30]; switch (pItemNew->dtype) { case CFG_DTYPE_BOOL: - strncpy(value, pItemNew->bval ? "true" : "false", sizeof(value) - 1); + pItemOld->bval = pItemNew->bval; break; case CFG_DTYPE_INT32: - sprintf(value, "%d", pItemNew->i32); + pItemOld->i32 = pItemNew->i32; break; case CFG_DTYPE_INT64: - sprintf(value, "%" PRId64, pItemNew->i64); + pItemOld->i64 = pItemNew->i64; break; case CFG_DTYPE_FLOAT: - sprintf(value, "%f", pItemNew->fval); + 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: - strcpy(value, pItemNew->str); + taosMemoryFree(pItemOld->str); + pItemOld->str = taosStrdup(pItemNew->str); + break; default: break; } - value[sizeof(value) - 1] = '\0'; - - TAOS_CHECK_RETURN(cfgSetItemVal(pItemOld, pItemNew->name, value, CFG_STYPE_ARG_LIST)); (void)taosThreadMutexUnlock(&pCfg->lock); }