diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 46219fe34c..51ff2bb506 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -1212,7 +1212,17 @@ static int32_t taosSetSystemCfg(SConfig *pCfg) { TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "charset"); const char *charset = pItem->str; - (void)taosSetSystemLocale(locale, charset); // ignore this error temporarily + int32_t code = taosSetSystemLocale(locale, charset); + if (TSDB_CODE_SUCCESS != code) { + uInfo("failed to set locale %s, since: %s", locale, tstrerror(code)); + char curLocale[TD_LOCALE_LEN] = {0}; + char curCharset[TD_CHARSET_LEN] = {0}; + taosGetSystemLocale(curLocale, curCharset); + if (0 != strlen(curLocale) && 0 != strlen(curCharset)) { + uInfo("current locale: %s, charset: %s", curLocale, curCharset); + } + } + osSetSystemLocale(locale, charset); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "enableCoreFile"); @@ -1669,25 +1679,28 @@ static int32_t cfgInitWrapper(SConfig **pCfg) { } TAOS_RETURN(TSDB_CODE_SUCCESS); } + int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, bool tsc) { if (tsCfg != NULL) TAOS_RETURN(TSDB_CODE_SUCCESS); - TAOS_CHECK_RETURN(cfgInitWrapper(&tsCfg)); + int32_t code = TSDB_CODE_SUCCESS; + int32_t lino = -1; + + TAOS_CHECK_GOTO(cfgInitWrapper(&tsCfg), &lino, _exit); if (tsc) { - TAOS_CHECK_RETURN(taosAddClientCfg(tsCfg)); - TAOS_CHECK_RETURN(taosAddClientLogCfg(tsCfg)); + TAOS_CHECK_GOTO(taosAddClientCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosAddClientLogCfg(tsCfg), &lino, _exit); } else { - TAOS_CHECK_RETURN(taosAddClientCfg(tsCfg)); - TAOS_CHECK_RETURN(taosAddServerCfg(tsCfg)); - TAOS_CHECK_RETURN(taosAddClientLogCfg(tsCfg)); - TAOS_CHECK_RETURN(taosAddServerLogCfg(tsCfg)); + TAOS_CHECK_GOTO(taosAddClientCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosAddServerCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosAddClientLogCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosAddServerLogCfg(tsCfg), &lino, _exit); } - TAOS_CHECK_RETURN(taosAddSystemCfg(tsCfg)); + TAOS_CHECK_GOTO(taosAddSystemCfg(tsCfg), &lino, _exit); - int32_t code = TSDB_CODE_SUCCESS; if ((code = taosLoadCfg(tsCfg, envCmd, cfgDir, envFile, apolloUrl)) != 0) { uError("failed to load cfg since %s", tstrerror(code)); cfgCleanup(tsCfg); @@ -1703,31 +1716,38 @@ int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile } if (tsc) { - TAOS_CHECK_RETURN(taosSetClientCfg(tsCfg)); + TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit); } else { - TAOS_CHECK_RETURN(taosSetClientCfg(tsCfg)); - TAOS_CHECK_RETURN(taosUpdateServerCfg(tsCfg)); - TAOS_CHECK_RETURN(taosSetServerCfg(tsCfg)); - TAOS_CHECK_RETURN(taosSetReleaseCfg(tsCfg)); - TAOS_CHECK_RETURN(taosSetTfsCfg(tsCfg)); - TAOS_CHECK_RETURN(taosSetS3Cfg(tsCfg)); + TAOS_CHECK_GOTO(taosSetClientCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosUpdateServerCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosSetServerCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosSetReleaseCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosSetTfsCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosSetS3Cfg(tsCfg), &lino, _exit); } - TAOS_CHECK_RETURN(taosSetSystemCfg(tsCfg)); - TAOS_CHECK_RETURN(taosSetFileHandlesLimit()); + TAOS_CHECK_GOTO(taosSetSystemCfg(tsCfg), &lino, _exit); + TAOS_CHECK_GOTO(taosSetFileHandlesLimit(), &lino, _exit); SConfigItem *pItem = cfgGetItem(tsCfg, "debugFlag"); if (NULL == pItem) { uError("debugFlag not found in cfg"); TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); } - TAOS_CHECK_RETURN(taosSetAllDebugFlag(tsCfg, pItem->i32)); + TAOS_CHECK_GOTO(taosSetAllDebugFlag(tsCfg, pItem->i32), &lino, _exit); cfgDumpCfg(tsCfg, tsc, false); - TAOS_CHECK_RETURN(taosCheckGlobalCfg()); + TAOS_CHECK_GOTO(taosCheckGlobalCfg(), &lino, _exit); - TAOS_RETURN(TSDB_CODE_SUCCESS); +_exit: + if (TSDB_CODE_SUCCESS != code) { + cfgCleanup(tsCfg); + tsCfg = NULL; + uError("failed to init cfg at %d since %s", lino, tstrerror(code)); + } + + TAOS_RETURN(code); } void taosCleanupCfg() { diff --git a/source/os/src/osLocale.c b/source/os/src/osLocale.c index c846ca82a3..2f835a7a27 100644 --- a/source/os/src/osLocale.c +++ b/source/os/src/osLocale.c @@ -75,7 +75,7 @@ char *taosCharsetReplace(char *charsetstr) { * * In case that the setLocale failed to be executed, the right charset needs to be set. */ -int32_t taosSetSystemLocale(const char *inLocale, const char *inCharSet) {\ +int32_t taosSetSystemLocale(const char *inLocale, const char *inCharSet) { if (!taosValidateEncodec(inCharSet)) { return terrno; }