diff --git a/include/common/tglobal.h b/include/common/tglobal.h index e49f768f55..c95a1ad662 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -305,6 +305,7 @@ int32_t setAllConfigs(SConfig *pCfg); void printConfigNotMatch(SArray *array); int32_t compareSConfigItemArrays(SArray *mArray, const SArray *dArray, SArray *diffArray); +bool isConifgItemLazyMode(SConfigItem *item); #ifdef __cplusplus } #endif diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 98ebc3aeff..54e948b4b4 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -3036,4 +3036,12 @@ void printConfigNotMatch(SArray *array) { } } } +} + +bool isConifgItemLazyMode(SConfigItem *item) { + if (item->dynScope == CFG_DYN_CLIENT_LAZY || item->dynScope == CFG_DYN_SERVER_LAZY || + item->dynScope == CFG_DYN_BOTH_LAZY) { + return true; + } + return false; } \ No newline at end of file diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index 7021e45173..8eda3c807a 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -476,10 +476,11 @@ int32_t dmProcessConfigReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { return code; } } - TAOS_CHECK_RETURN(taosCfgDynamicOptions(pCfg, cfgReq.config, true)); - if (cfgReq.version > 0) { - tsdmConfigVersion = cfgReq.version; + if (isConifgItemLazyMode(pItem)) { + TAOS_CHECK_RETURN(taosCfgDynamicOptions(pCfg, cfgReq.config, true)); + return TSDB_CODE_INVALID_MSG; } + if (pItem->category == CFG_CATEGORY_GLOBAL) { code = taosPersistGlobalConfig(taosGetGlobalCfg(pCfg), pMgmt->path, tsdmConfigVersion); if (code != TSDB_CODE_SUCCESS) { @@ -491,6 +492,9 @@ int32_t dmProcessConfigReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { dError("failed to persist local config since %s", tstrerror(code)); } } + if (cfgReq.version > 0) { + tsdmConfigVersion = cfgReq.version; + } return TSDB_CODE_SUCCESS; }