From 2fcf9dc63830cee1b68d8ee1a59291e34f1938cd Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 14:31:36 +0800 Subject: [PATCH 01/10] charset --- include/dnode/mgmt/dnode.h | 5 ----- include/dnode/mnode/mnode.h | 5 ----- source/dnode/mgmt/daemon/src/dmnCfg.c | 5 ----- source/dnode/mgmt/impl/src/dndEnv.c | 3 --- source/dnode/mgmt/impl/src/dndMgmt.c | 6 +++--- source/dnode/mgmt/impl/src/dndMnode.c | 5 ----- source/dnode/mnode/impl/inc/mndInt.h | 1 + source/dnode/mnode/impl/src/mndDnode.c | 18 +++++++++--------- source/dnode/mnode/impl/src/mndTelem.c | 10 +++------- source/dnode/mnode/impl/src/mnode.c | 15 --------------- 10 files changed, 16 insertions(+), 57 deletions(-) diff --git a/include/dnode/mgmt/dnode.h b/include/dnode/mgmt/dnode.h index d630fd0b1a..a5882c49e2 100644 --- a/include/dnode/mgmt/dnode.h +++ b/include/dnode/mgmt/dnode.h @@ -34,11 +34,6 @@ typedef struct { bool printAuth; int32_t rpcTimer; int32_t rpcMaxTime; - char timezone[TD_TIMEZONE_LEN]; - char locale[TD_LOCALE_LEN]; - char charset[TD_LOCALE_LEN]; - char buildinfo[64]; - char gitinfo[48]; } SDnodeEnvCfg; /** diff --git a/include/dnode/mnode/mnode.h b/include/dnode/mnode/mnode.h index 01855f6d92..a876827239 100644 --- a/include/dnode/mnode/mnode.h +++ b/include/dnode/mnode/mnode.h @@ -50,11 +50,6 @@ typedef struct SMnodeCfg { bool printAuth; int32_t statusInterval; int32_t shellActivityTimer; - char *timezone; - char *locale; - char *charset; - char *buildinfo; - char *gitinfo; } SMnodeCfg; typedef struct { diff --git a/source/dnode/mgmt/daemon/src/dmnCfg.c b/source/dnode/mgmt/daemon/src/dmnCfg.c index 65c3e67d97..5713df80c5 100644 --- a/source/dnode/mgmt/daemon/src/dmnCfg.c +++ b/source/dnode/mgmt/daemon/src/dmnCfg.c @@ -184,11 +184,6 @@ SDnodeEnvCfg dmnGetEnvCfg(SConfig *pCfg) { const char *vstr = cfgGetItem(pCfg, "version")->str; envCfg.sver = 30000000; - tstrncpy(envCfg.buildinfo, cfgGetItem(pCfg, "buildinfo")->str, sizeof(envCfg.buildinfo)); - tstrncpy(envCfg.gitinfo, cfgGetItem(pCfg, "gitinfo")->str, sizeof(envCfg.gitinfo)); - tstrncpy(envCfg.timezone, cfgGetItem(pCfg, "timezone")->str, sizeof(envCfg.timezone)); - tstrncpy(envCfg.locale, cfgGetItem(pCfg, "locale")->str, sizeof(envCfg.locale)); - tstrncpy(envCfg.charset, cfgGetItem(pCfg, "charset")->str, sizeof(envCfg.charset)); envCfg.numOfCores = cfgGetItem(pCfg, "numOfCores")->i32; envCfg.numOfCommitThreads = (uint16_t)cfgGetItem(pCfg, "numOfCommitThreads")->i32; envCfg.enableTelem = cfgGetItem(pCfg, "telemetryReporting")->bval; diff --git a/source/dnode/mgmt/impl/src/dndEnv.c b/source/dnode/mgmt/impl/src/dndEnv.c index b8f249f838..7c45474be4 100644 --- a/source/dnode/mgmt/impl/src/dndEnv.c +++ b/source/dnode/mgmt/impl/src/dndEnv.c @@ -285,9 +285,6 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) { SVnodeOpt vnodeOpt = { .sver = pCfg->sver, - .timezone = pCfg->timezone, - .locale = pCfg->locale, - .charset = pCfg->charset, .nthreads = pCfg->numOfCommitThreads, .putReqToVQueryQFp = dndPutReqToVQueryQ, .sendReqToDnodeFp = dndSendReqToDnode diff --git a/source/dnode/mgmt/impl/src/dndMgmt.c b/source/dnode/mgmt/impl/src/dndMgmt.c index b7f42fb465..6ba6d9ce1c 100644 --- a/source/dnode/mgmt/impl/src/dndMgmt.c +++ b/source/dnode/mgmt/impl/src/dndMgmt.c @@ -371,9 +371,9 @@ void dndSendStatusReq(SDnode *pDnode) { req.clusterCfg.checkTime = 0; char timestr[32] = "1970-01-01 00:00:00.00"; (void)taosParseTime(timestr, &req.clusterCfg.checkTime, (int32_t)strlen(timestr), TSDB_TIME_PRECISION_MILLI, 0); - memcpy(req.clusterCfg.timezone, pDnode->env.timezone, TD_TIMEZONE_LEN); - memcpy(req.clusterCfg.locale, pDnode->env.locale, TD_LOCALE_LEN); - memcpy(req.clusterCfg.charset, pDnode->env.charset, TD_LOCALE_LEN); + memcpy(req.clusterCfg.timezone, osTimezone(), TD_TIMEZONE_LEN); + memcpy(req.clusterCfg.locale, osLocale(), TD_LOCALE_LEN); + memcpy(req.clusterCfg.charset, osCharset(), TD_LOCALE_LEN); taosRUnLockLatch(&pMgmt->latch); req.pVloads = taosArrayInit(TSDB_MAX_VNODES, sizeof(SVnodeLoad)); diff --git a/source/dnode/mgmt/impl/src/dndMnode.c b/source/dnode/mgmt/impl/src/dndMnode.c index c6db75c057..3117a85561 100644 --- a/source/dnode/mgmt/impl/src/dndMnode.c +++ b/source/dnode/mgmt/impl/src/dndMnode.c @@ -277,11 +277,6 @@ static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) { pOption->cfg.enableTelem = pDnode->env.enableTelem; pOption->cfg.statusInterval = pDnode->cfg.statusInterval; pOption->cfg.shellActivityTimer = pDnode->cfg.shellActivityTimer; - pOption->cfg.timezone = pDnode->env.timezone; - pOption->cfg.charset = pDnode->env.charset; - pOption->cfg.locale = pDnode->env.locale; - pOption->cfg.gitinfo = pDnode->env.gitinfo; - pOption->cfg.buildinfo = pDnode->env.buildinfo; } static void dndBuildMnodeDeployOption(SDnode *pDnode, SMnodeOpt *pOption) { diff --git a/source/dnode/mnode/impl/inc/mndInt.h b/source/dnode/mnode/impl/inc/mndInt.h index 5c32da966b..74ae159d9d 100644 --- a/source/dnode/mnode/impl/inc/mndInt.h +++ b/source/dnode/mnode/impl/inc/mndInt.h @@ -24,6 +24,7 @@ #include "tqueue.h" #include "ttime.h" #include "wal.h" +#include "version.h" #ifdef __cplusplus extern "C" { diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 39ea4b482c..b520acf2d2 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -277,19 +277,19 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, const SClusterCfg *pCfg) { return DND_REASON_STATUS_INTERVAL_NOT_MATCH; } - if ((0 != strcasecmp(pCfg->timezone, pMnode->cfg.timezone)) && (pMnode->checkTime != pCfg->checkTime)) { - mError("timezone [%s - %s] [%" PRId64 " - %" PRId64 "] cfg inconsistent", pCfg->timezone, pMnode->cfg.timezone, + if ((0 != strcasecmp(pCfg->timezone, osTimezone())) && (pMnode->checkTime != pCfg->checkTime)) { + mError("timezone [%s - %s] [%" PRId64 " - %" PRId64 "] cfg inconsistent", pCfg->timezone, osTimezone(), pCfg->checkTime, pMnode->checkTime); return DND_REASON_TIME_ZONE_NOT_MATCH; } - if (0 != strcasecmp(pCfg->locale, pMnode->cfg.locale)) { - mError("locale [%s - %s] cfg inconsistent", pCfg->locale, pMnode->cfg.locale); + if (0 != strcasecmp(pCfg->locale, osLocale())) { + mError("locale [%s - %s] cfg inconsistent", pCfg->locale, osLocale()); return DND_REASON_LOCALE_NOT_MATCH; } - if (0 != strcasecmp(pCfg->charset, pMnode->cfg.charset)) { - mError("charset [%s - %s] cfg inconsistent.", pCfg->charset, pMnode->cfg.charset); + if (0 != strcasecmp(pCfg->charset, osCharset())) { + mError("charset [%s - %s] cfg inconsistent.", pCfg->charset, osCharset()); return DND_REASON_CHARSET_NOT_MATCH; } @@ -670,15 +670,15 @@ static int32_t mndRetrieveConfigs(SMnodeMsg *pReq, SShowObj *pShow, char *data, numOfRows++; cfgOpts[numOfRows] = "timezone"; - snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", pMnode->cfg.timezone); + snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", osTimezone()); numOfRows++; cfgOpts[numOfRows] = "locale"; - snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", pMnode->cfg.locale); + snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", osLocale()); numOfRows++; cfgOpts[numOfRows] = "charset"; - snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", pMnode->cfg.charset); + snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%s", osCharset()); numOfRows++; for (int32_t i = 0; i < numOfRows; i++) { diff --git a/source/dnode/mnode/impl/src/mndTelem.c b/source/dnode/mnode/impl/src/mndTelem.c index 5292dd0a41..ced1be687d 100644 --- a/source/dnode/mnode/impl/src/mndTelem.c +++ b/source/dnode/mnode/impl/src/mndTelem.c @@ -138,13 +138,9 @@ static void mndAddMemoryInfo(SMnode* pMnode, SBufferWriter* bw) { static void mndAddVersionInfo(SMnode* pMnode, SBufferWriter* bw) { STelemMgmt* pMgmt = &pMnode->telemMgmt; - - char vstr[32] = {0}; - taosVersionIntToStr(pMnode->cfg.sver, vstr, 32); - - mndAddStringField(bw, "version", vstr); - mndAddStringField(bw, "buildInfo", pMnode->cfg.buildinfo); - mndAddStringField(bw, "gitInfo", pMnode->cfg.gitinfo); + mndAddStringField(bw, "version", version); + mndAddStringField(bw, "buildInfo", buildinfo); + mndAddStringField(bw, "gitInfo", gitinfo); mndAddStringField(bw, "email", pMgmt->email); } diff --git a/source/dnode/mnode/impl/src/mnode.c b/source/dnode/mnode/impl/src/mnode.c index 299e66a7c0..f5acc897e7 100644 --- a/source/dnode/mnode/impl/src/mnode.c +++ b/source/dnode/mnode/impl/src/mnode.c @@ -294,11 +294,6 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) { pMnode->cfg.enableTelem = pOption->cfg.enableTelem; pMnode->cfg.statusInterval = pOption->cfg.statusInterval; pMnode->cfg.shellActivityTimer = pOption->cfg.shellActivityTimer; - pMnode->cfg.timezone = strdup(pOption->cfg.timezone); - pMnode->cfg.locale = strdup(pOption->cfg.locale); - pMnode->cfg.charset = strdup(pOption->cfg.charset); - pMnode->cfg.gitinfo = strdup(pOption->cfg.gitinfo); - pMnode->cfg.buildinfo = strdup(pOption->cfg.buildinfo); if (pMnode->sendReqToDnodeFp == NULL || pMnode->sendReqToMnodeFp == NULL || pMnode->sendRedirectRspFp == NULL || pMnode->putReqToMWriteQFp == NULL || pMnode->dnodeId < 0 || pMnode->clusterId < 0 || @@ -307,11 +302,6 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) { return -1; } - if (pMnode->cfg.timezone == NULL || pMnode->cfg.locale == NULL || pMnode->cfg.charset == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return -1; - } - return 0; } @@ -381,11 +371,6 @@ void mndClose(SMnode *pMnode) { mDebug("start to close mnode"); mndCleanupSteps(pMnode, -1); tfree(pMnode->path); - tfree(pMnode->cfg.charset); - tfree(pMnode->cfg.locale); - tfree(pMnode->cfg.timezone); - tfree(pMnode->cfg.gitinfo); - tfree(pMnode->cfg.buildinfo); tfree(pMnode); mDebug("mnode is closed"); } From 4278439666e4b3d40103b03a2a06cef943f0e914 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 18:13:57 +0800 Subject: [PATCH 02/10] refact config --- include/common/tglobal.h | 66 +- include/dnode/mgmt/dnode.h | 11 +- include/os/osEnv.h | 1 + include/{common => util}/tcfg.h | 0 .../{libs/config/config.h => util/tconfig.h} | 16 +- source/client/CMakeLists.txt | 2 +- source/client/inc/clientInt.h | 2 +- source/client/src/clientCfg.c | 147 ---- source/client/test/CMakeLists.txt | 4 +- source/common/src/tglobal.c | 763 ++++++++---------- source/dnode/mgmt/daemon/CMakeLists.txt | 2 +- source/dnode/mgmt/daemon/inc/dmnInt.h | 2 +- source/dnode/mgmt/daemon/src/dmnCfg.c | 50 +- source/dnode/mgmt/daemon/src/dmnLog.c | 3 - source/dnode/mgmt/impl/inc/dndInt.h | 1 + source/dnode/mgmt/impl/src/dndMgmt.c | 4 +- source/dnode/mgmt/impl/src/dndMnode.c | 2 - source/dnode/mgmt/impl/src/dndTransport.c | 8 +- source/dnode/mgmt/impl/src/dndVnodes.c | 2 +- .../dnode/mgmt/impl/test/sut/src/server.cpp | 5 - source/libs/CMakeLists.txt | 1 - source/libs/config/CMakeLists.txt | 13 - source/libs/config/inc/cfgInt.h | 47 -- source/libs/config/src/cfgApolloUrl.c | 22 - source/libs/config/src/cfgCfgFile.c | 70 -- source/libs/config/src/cfgEnvFile.c | 22 - source/libs/config/src/cfgEnvVar.c | 22 - source/libs/config/test/CMakeLists.txt | 14 - source/os/src/osEnv.c | 2 + .../src/config.c => util/src/tconfig.c} | 169 ++-- source/util/src/ttimer.c | 2 +- source/util/test/CMakeLists.txt | 8 + source/{libs/config => util}/test/cfgTest.cpp | 29 +- 33 files changed, 561 insertions(+), 951 deletions(-) rename include/{common => util}/tcfg.h (100%) rename include/{libs/config/config.h => util/tconfig.h} (90%) delete mode 100644 source/libs/config/CMakeLists.txt delete mode 100644 source/libs/config/inc/cfgInt.h delete mode 100644 source/libs/config/src/cfgApolloUrl.c delete mode 100644 source/libs/config/src/cfgCfgFile.c delete mode 100644 source/libs/config/src/cfgEnvFile.c delete mode 100644 source/libs/config/src/cfgEnvVar.c delete mode 100644 source/libs/config/test/CMakeLists.txt rename source/{libs/config/src/config.c => util/src/tconfig.c} (85%) rename source/{libs/config => util}/test/cfgTest.cpp (81%) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index bb704f1536..e7f39f048d 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -20,24 +20,39 @@ extern "C" { #endif +#include "tcfg.h" #include "tdef.h" +// cluster +extern int32_t tsVersion; +extern int32_t tsStatusInterval; +extern bool tsEnableTelemetryReporting; + // common -extern int32_t tsCompressMsgSize; -extern int32_t tsCompressColData; -extern int32_t tsMaxNumOfDistinctResults; -extern int tsCompatibleModel; // 2.0 compatible model -extern int8_t tsEnableSlaveQuery; -extern int8_t tsEnableAdjustMaster; -extern int8_t tsPrintAuth; -extern int64_t tsTickPerDay[3]; +extern int32_t tsRpcTimer; +extern int32_t tsRpcMaxTime; +extern bool tsRpcForceTcp; // all commands go to tcp protocol if this is enabled +extern int32_t tsMaxConnections; +extern int32_t tsMaxShellConns; +extern int32_t tsShellActivityTimer; +extern int32_t tsMaxTmrCtrl; +extern float tsNumOfThreadsPerCore; +extern int32_t tsNumOfCommitThreads; +extern float tsRatioOfQueryCores; +extern int32_t tsCompressMsgSize; +extern int32_t tsCompressColData; +extern int32_t tsMaxNumOfDistinctResults; +extern int32_t tsCompatibleModel; +extern bool tsEnableSlaveQuery; +extern bool tsPrintAuth; +extern int64_t tsTickPerDay[3]; // query buffer management extern int32_t tsQueryBufferSize; // maximum allowed usage buffer size in MB for each data node during query processing extern int64_t tsQueryBufferSizeBytes; // maximum allowed usage buffer size in byte for each data node -extern int32_t tsRetrieveBlockingModel; // retrieve threads will be blocked -extern int8_t tsKeepOriginalColumnName; -extern int8_t tsDeadLockKillQuery; +extern bool tsRetrieveBlockingModel; // retrieve threads will be blocked +extern bool tsKeepOriginalColumnName; +extern bool tsDeadLockKillQuery; // client extern int32_t tsMaxWildCardsLen; @@ -52,13 +67,32 @@ extern float tsStreamComputDelayRatio; // the delayed computing ration of the extern int32_t tsProjectExecInterval; extern int64_t tsMaxRetentWindow; +// build info +extern char version[]; +extern char compatible_version[]; +extern char gitinfo[]; +extern char gitinfoOfInternal[]; +extern char buildinfo[]; + +// lossy +extern char tsLossyColumns[]; +extern double tsFPrecision; +extern double tsDPrecision; +extern uint32_t tsMaxRange; +extern uint32_t tsCurRange; +extern char tsCompressor[]; + +// tfs +extern int32_t tsDiskCfgNum; +extern SDiskCfg tsDiskCfg[]; + #define NEEDTO_COMPRESSS_MSG(size) (tsCompressMsgSize != -1 && (size) > tsCompressMsgSize) -int32_t taosCfgDynamicOptions(char *msg); -bool taosCheckBalanceCfgOptions(const char *option, int32_t *vnodeId, int32_t *dnodeId); -void taosAddDataDir(int index, char *v1, int level, int primary); -void taosReadDataDirCfg(char *v1, char *v2, char *v3); -void taosPrintDataDirCfg(); +int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile, + const char *apolloUrl, bool tsc); +int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloUrl, bool tsc); +void taosCleanupCfg(); +void taosCfgDynamicOptions(const char *option, const char *value); #ifdef __cplusplus } diff --git a/include/dnode/mgmt/dnode.h b/include/dnode/mgmt/dnode.h index a5882c49e2..c64397dd51 100644 --- a/include/dnode/mgmt/dnode.h +++ b/include/dnode/mgmt/dnode.h @@ -53,11 +53,12 @@ void dndCleanup(); /* ------------------------ SDnode ----------------------- */ typedef struct { int32_t numOfSupportVnodes; - int32_t statusInterval; - float numOfThreadsPerCore; - float ratioOfQueryCores; - int32_t maxShellConns; - int32_t shellActivityTimer; + // int32_t statusInterval; + // float numOfThreadsPerCore; + // float ratioOfQueryCores; + // int32_t maxShellConns; + // int32_t shellActivityTimer; + uint16_t serverPort; char dataDir[TSDB_FILENAME_LEN]; char localEp[TSDB_EP_LEN]; diff --git a/include/os/osEnv.h b/include/os/osEnv.h index 29898953e6..ce376bb37b 100644 --- a/include/os/osEnv.h +++ b/include/os/osEnv.h @@ -47,6 +47,7 @@ void osSetLogReservedSpace(float sizeInGB); void osSetTempReservedSpace(float sizeInGB); void osSetDataReservedSpace(float sizeInGB); void osSetTimezone(const char *timezone); +bool osSetEnableCore(bool enable); #ifdef __cplusplus } diff --git a/include/common/tcfg.h b/include/util/tcfg.h similarity index 100% rename from include/common/tcfg.h rename to include/util/tcfg.h diff --git a/include/libs/config/config.h b/include/util/tconfig.h similarity index 90% rename from include/libs/config/config.h rename to include/util/tconfig.h index 594c258648..59e58683de 100644 --- a/include/libs/config/config.h +++ b/include/util/tconfig.h @@ -52,6 +52,7 @@ typedef enum { typedef struct SConfigItem { ECfgSrcType stype; ECfgDataType dtype; + bool tsc; char *name; union { bool bval; @@ -82,13 +83,12 @@ void cfgCancelIterate(SConfig *pCfg, SConfigItem *pIter); SConfigItem *cfgGetItem(SConfig *pCfg, const char *name); int32_t cfgSetItem(SConfig *pCfg, const char *name, const char *value, ECfgSrcType stype); -int32_t cfgAddBool(SConfig *pCfg, const char *name, bool defaultVal); -int32_t cfgAddInt32(SConfig *pCfg, const char *name, int32_t defaultVal, int64_t minval, int64_t maxval); -int32_t cfgAddInt64(SConfig *pCfg, const char *name, int64_t defaultVal, int64_t minval, int64_t maxval); -int32_t cfgAddFloat(SConfig *pCfg, const char *name, float defaultVal, double minval, double maxval); -int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal); -int32_t cfgAddIpStr(SConfig *pCfg, const char *name, const char *defaultVa); -int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal); +int32_t cfgAddBool(SConfig *pCfg, const char *name, bool defaultVal, bool tsc); +int32_t cfgAddInt32(SConfig *pCfg, const char *name, int32_t defaultVal, int64_t minval, int64_t maxval, bool tsc); +int32_t cfgAddInt64(SConfig *pCfg, const char *name, int64_t defaultVal, int64_t minval, int64_t maxval, bool tsc); +int32_t cfgAddFloat(SConfig *pCfg, const char *name, float defaultVal, double minval, double maxval, bool tsc); +int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal, bool tsc); +int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal, bool tsc); int32_t cfgAddLocale(SConfig *pCfg, const char *name, const char *defaultVal); int32_t cfgAddCharset(SConfig *pCfg, const char *name, const char *defaultVal); int32_t cfgAddTimezone(SConfig *pCfg, const char *name, const char *defaultVal); @@ -96,7 +96,7 @@ int32_t cfgAddTimezone(SConfig *pCfg, const char *name, const char *defaultVal); const char *cfgStypeStr(ECfgSrcType type); const char *cfgDtypeStr(ECfgDataType type); -void cfgDumpCfg(SConfig *pCfg); +void cfgDumpCfg(SConfig *pCfg, bool tsc); #ifdef __cplusplus } diff --git a/source/client/CMakeLists.txt b/source/client/CMakeLists.txt index c793825556..3210c0c6de 100644 --- a/source/client/CMakeLists.txt +++ b/source/client/CMakeLists.txt @@ -8,7 +8,7 @@ target_include_directories( target_link_libraries( taos INTERFACE api - PRIVATE os util common transport parser planner catalog scheduler function qcom config + PRIVATE os util common transport parser planner catalog scheduler function qcom ) if(${BUILD_TEST}) diff --git a/source/client/inc/clientInt.h b/source/client/inc/clientInt.h index 60eb0200a7..9ba2e2faef 100644 --- a/source/client/inc/clientInt.h +++ b/source/client/inc/clientInt.h @@ -32,7 +32,7 @@ extern "C" { #include "tmsgtype.h" #include "trpc.h" -#include "config.h" +#include "tconfig.h" #define CHECK_CODE_GOTO(expr, label) \ do { \ diff --git a/source/client/src/clientCfg.c b/source/client/src/clientCfg.c index d1dafbed5c..fb0b28a3ca 100644 --- a/source/client/src/clientCfg.c +++ b/source/client/src/clientCfg.c @@ -17,153 +17,6 @@ #include "clientInt.h" #include "ulog.h" -// todo refact -SConfig *tscCfg; - -static int32_t tscLoadCfg(SConfig *pConfig, const char *inputCfgDir, const char *envFile, const char *apolloUrl) { - char cfgDir[PATH_MAX] = {0}; - char cfgFile[PATH_MAX + 100] = {0}; - - taosExpandDir(inputCfgDir, cfgDir, PATH_MAX); - snprintf(cfgFile, sizeof(cfgFile), "%s" TD_DIRSEP "taos.cfg", cfgDir); - - if (cfgLoad(pConfig, CFG_STYPE_APOLLO_URL, apolloUrl) != 0) { - uError("failed to load from apollo url:%s since %s\n", apolloUrl, terrstr()); - return -1; - } - - if (cfgLoad(pConfig, CFG_STYPE_CFG_FILE, cfgFile) != 0) { - if (cfgLoad(pConfig, CFG_STYPE_CFG_FILE, cfgDir) != 0) { - uError("failed to load from config file:%s since %s\n", cfgFile, terrstr()); - return -1; - } - } - - if (cfgLoad(pConfig, CFG_STYPE_ENV_FILE, envFile) != 0) { - uError("failed to load from env file:%s since %s\n", envFile, terrstr()); - return -1; - } - - if (cfgLoad(pConfig, CFG_STYPE_ENV_VAR, NULL) != 0) { - uError("failed to load from global env variables since %s\n", terrstr()); - return -1; - } - - return 0; -} - -static int32_t tscAddLogCfg(SConfig *pCfg) { - if (cfgAddDir(pCfg, "logDir", "/var/log/taos") != 0) return -1; - if (cfgAddBool(pCfg, "asyncLog", 1) != 0) return -1; - if (cfgAddInt32(pCfg, "numOfLogLines", 10000000, 1000, 2000000000) != 0) return -1; - if (cfgAddInt32(pCfg, "logKeepDays", 0, -365000, 365000) != 0) return -1; - if (cfgAddInt32(pCfg, "debugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "cDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "jniDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "tmrDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "uDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcDebugFlag", 0, 0, 255) != 0) return -1; - return 0; -} - -static int32_t tscSetLogCfg(SConfig *pCfg) { - osSetLogDir(cfgGetItem(pCfg, "logDir")->str); - tsAsyncLog = cfgGetItem(pCfg, "asyncLog")->bval; - tsNumOfLogLines = cfgGetItem(pCfg, "numOfLogLines")->i32; - tsLogKeepDays = cfgGetItem(pCfg, "logKeepDays")->i32; - cDebugFlag = cfgGetItem(pCfg, "cDebugFlag")->i32; - jniDebugFlag = cfgGetItem(pCfg, "jniDebugFlag")->i32; - tmrDebugFlag = cfgGetItem(pCfg, "tmrDebugFlag")->i32; - uDebugFlag = cfgGetItem(pCfg, "uDebugFlag")->i32; - rpcDebugFlag = cfgGetItem(pCfg, "rpcDebugFlag")->i32; - - int32_t debugFlag = cfgGetItem(pCfg, "debugFlag")->i32; - taosSetAllDebugFlag(debugFlag); - return 0; -} - -int32_t tscInitLog(const char *cfgDir, const char *envFile, const char *apolloUrl) { - if (tsLogInited) return 0; - - SConfig *pCfg = cfgInit(); - if (pCfg == NULL) return -1; - - if (tscAddLogCfg(pCfg) != 0) { - printf("failed to add log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - if (tscLoadCfg(pCfg, cfgDir, envFile, apolloUrl) != 0) { - printf("failed to load log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - if (tscSetLogCfg(pCfg) != 0) { - printf("failed to set log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - const int32_t maxLogFileNum = 10; - if (taosInitLog("taoslog", maxLogFileNum) != 0) { - printf("failed to init log file since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - cfgDumpCfg(pCfg); - cfgCleanup(pCfg); - return 0; -} - -static int32_t tscAddEpCfg(SConfig *pCfg) { - char defaultFqdn[TSDB_FQDN_LEN] = {0}; - if (taosGetFqdn(defaultFqdn) != 0) { - terrno = TAOS_SYSTEM_ERROR(errno); - return -1; - } - if (cfgAddString(pCfg, "fqdn", defaultFqdn) != 0) return -1; - - int32_t defaultServerPort = 6030; - if (cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056) != 0) return -1; - - char defaultFirstEp[TSDB_EP_LEN] = {0}; - char defaultSecondEp[TSDB_EP_LEN] = {0}; - snprintf(defaultFirstEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); - snprintf(defaultSecondEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); - if (cfgAddString(pCfg, "firstEp", defaultFirstEp) != 0) return -1; - if (cfgAddString(pCfg, "secondEp", defaultSecondEp) != 0) return -1; - - return 0; -} - -static int32_t tscAddCfg(SConfig *pCfg) { - if (tscAddEpCfg(pCfg) != 0) return -1; - - // if (cfgAddString(pCfg, "buildinfo", buildinfo) != 0) return -1; - // if (cfgAddString(pCfg, "gitinfo", gitinfo) != 0) return -1; - // if (cfgAddString(pCfg, "version", version) != 0) return -1; - - // if (cfgAddDir(pCfg, "dataDir", osDataDir()) != 0) return -1; - if (cfgAddTimezone(pCfg, "timezone", "") != 0) return -1; - if (cfgAddLocale(pCfg, "locale", "") != 0) return -1; - if (cfgAddCharset(pCfg, "charset", "") != 0) return -1; - if (cfgAddInt32(pCfg, "numOfCores", 1, 1, 100000) != 0) return -1; - if (cfgAddInt32(pCfg, "numOfCommitThreads", 4, 1, 1000) != 0) return -1; - // if (cfgAddBool(pCfg, "telemetryReporting", 0) != 0) return -1; - if (cfgAddBool(pCfg, "enableCoreFile", 0) != 0) return -1; - // if (cfgAddInt32(pCfg, "supportVnodes", 256, 0, 65536) != 0) return -1; - if (cfgAddInt32(pCfg, "statusInterval", 1, 1, 30) != 0) return -1; - if (cfgAddFloat(pCfg, "numOfThreadsPerCore", 1, 0, 10) != 0) return -1; - if (cfgAddFloat(pCfg, "ratioOfQueryCores", 1, 0, 5) != 0) return -1; - if (cfgAddInt32(pCfg, "shellActivityTimer", 3, 1, 120) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcTimer", 300, 100, 3000) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcMaxTime", 600, 100, 7200) != 0) return -1; - if (cfgAddInt32(pCfg, "maxConnections", 50000, 1, 100000) != 0) return -1; - return 0; -} int32_t tscCheckCfg(SConfig *pCfg) { bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval; diff --git a/source/client/test/CMakeLists.txt b/source/client/test/CMakeLists.txt index 7f6ce81788..ee5109860e 100644 --- a/source/client/test/CMakeLists.txt +++ b/source/client/test/CMakeLists.txt @@ -8,13 +8,13 @@ AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SOURCE_LIST) ADD_EXECUTABLE(clientTest clientTests.cpp) TARGET_LINK_LIBRARIES( clientTest - PUBLIC os util common transport parser catalog scheduler function gtest taos qcom config + PUBLIC os util common transport parser catalog scheduler function gtest taos qcom ) ADD_EXECUTABLE(tmqTest tmqTest.cpp) TARGET_LINK_LIBRARIES( tmqTest - PUBLIC os util common transport parser catalog scheduler function gtest taos qcom config + PUBLIC os util common transport parser catalog scheduler function gtest taos qcom ) TARGET_INCLUDE_DIRECTORIES( diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index b4c9efd77d..3064703404 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -19,18 +19,32 @@ #include "taosdef.h" #include "taoserror.h" #include "tcompare.h" +#include "tconfig.h" #include "tep.h" #include "tglobal.h" #include "tlog.h" #include "tutil.h" #include "ulog.h" +// cluster +int32_t tsVersion = 30000000; +int32_t tsStatusInterval = 1; // second +bool tsEnableTelemetryReporting = 0; // common +int32_t tsRpcTimer = 300; +int32_t tsRpcMaxTime = 600; // seconds; +bool tsRpcForceTcp = 1; // disable this, means query, show command use udp protocol as default +int32_t tsMaxShellConns = 50000; +int32_t tsMaxConnections = 50000; +int32_t tsShellActivityTimer = 3; // second +float tsNumOfThreadsPerCore = 1.0f; +int32_t tsNumOfCommitThreads = 4; +float tsRatioOfQueryCores = 1.0f; int32_t tsMaxBinaryDisplayWidth = 30; -int8_t tsEnableSlaveQuery = 1; -int8_t tsEnableAdjustMaster = 1; -int8_t tsPrintAuth = 0; +bool tsEnableSlaveQuery = 1; +bool tsPrintAuth = 0; + /* * denote if the server needs to compress response message at the application layer to client, including query rsp, * metricmeta rsp, and multi-meter query rsp message body. The client compress the submit message to server. @@ -93,18 +107,21 @@ int32_t tsQueryBufferSize = -1; int64_t tsQueryBufferSizeBytes = -1; // in retrieve blocking model, the retrieve threads will wait for the completion of the query processing. -int32_t tsRetrieveBlockingModel = 0; +bool tsRetrieveBlockingModel = 0; // last_row(*), first(*), last_row(ts, col1, col2) query, the result fields will be the original column name -int8_t tsKeepOriginalColumnName = 0; +bool tsKeepOriginalColumnName = 0; // long query death-lock -int8_t tsDeadLockKillQuery = 0; +bool tsDeadLockKillQuery = 0; // tsdb config // For backward compatibility bool tsdbForceKeepFile = false; +int32_t tsDiskCfgNum = 0; +SDiskCfg tsDiskCfg[TFS_MAX_DISKS] = {0}; + /* * minimum scale for whole system, millisecond by default * for TSDB_TIME_PRECISION_MILLI: 86400000L @@ -113,414 +130,340 @@ bool tsdbForceKeepFile = false; */ int64_t tsTickPerDay[] = {86400000L, 86400000000L, 86400000000000L}; -int32_t (*monStartSystemFp)() = NULL; -void (*monStopSystemFp)() = NULL; -void (*monExecuteSQLFp)(char *sql) = NULL; +// lossy compress 6 +char tsLossyColumns[32] = ""; // "float|double" means all float and double columns can be lossy compressed. set empty + // can close lossy compress. +// below option can take effect when tsLossyColumns not empty +double tsFPrecision = 1E-8; // float column precision +double tsDPrecision = 1E-16; // double column precision +uint32_t tsMaxRange = 500; // max range +uint32_t tsCurRange = 100; // range +char tsCompressor[32] = "ZSTD_COMPRESSOR"; // ZSTD_COMPRESSOR or GZIP_COMPRESSOR -char *qtypeStr[] = {"rpc", "fwd", "wal", "cq", "query"}; - -static pthread_once_t tsInitGlobalCfgOnce = PTHREAD_ONCE_INIT; - - -int32_t taosCfgDynamicOptions(char *msg) { - #if 0 - char *option, *value; - int32_t olen, vlen; - int32_t vint = 0; - - paGetToken(msg, &option, &olen); - if (olen == 0) return -1; - - paGetToken(option + olen + 1, &value, &vlen); - if (vlen == 0) - vint = 135; - else { - vint = atoi(value); - } - - uInfo("change dynamic option: %s, value: %d", option, vint); - - for (int32_t i = 0; i < tsGlobalConfigNum; ++i) { - SGlobalCfg *cfg = tsGlobalConfig + i; - // if (!(cfg->cfgType & TSDB_CFG_CTYPE_B_LOG)) continue; - if (cfg->valType != TAOS_CFG_VTYPE_INT32 && cfg->valType != TAOS_CFG_VTYPE_INT8) continue; - - int32_t cfgLen = (int32_t)strlen(cfg->option); - if (cfgLen != olen) continue; - if (strncasecmp(option, cfg->option, olen) != 0) continue; - if (cfg->valType == TAOS_CFG_VTYPE_INT32) { - *((int32_t *)cfg->ptr) = vint; - } else { - *((int8_t *)cfg->ptr) = (int8_t)vint; - } - - if (strncasecmp(cfg->option, "monitor", olen) == 0) { - if (1 == vint) { - if (monStartSystemFp) { - (*monStartSystemFp)(); - uInfo("monitor is enabled"); - } else { - uError("monitor can't be updated, for monitor not initialized"); - } - } else { - if (monStopSystemFp) { - (*monStopSystemFp)(); - uInfo("monitor is disabled"); - } else { - uError("monitor can't be updated, for monitor not initialized"); - } - } - return 0; - } - if (strncasecmp(cfg->option, "debugFlag", olen) == 0) { - taosSetAllDebugFlag(); - } - return 0; - } - - if (strncasecmp(option, "resetlog", 8) == 0) { - taosResetLog(); - taosPrintCfg(); - return 0; - } - - if (strncasecmp(option, "resetQueryCache", 15) == 0) { - if (monExecuteSQLFp) { - (*monExecuteSQLFp)("resetQueryCache"); - uInfo("resetquerycache is executed"); - } else { - uError("resetquerycache can't be executed, for monitor not started"); - } - } - -#endif - return false; -} - -// void taosAddDataDir(int index, char *v1, int level, int primary) { -// tstrncpy(tsDiskCfg[index].dir, v1, TSDB_FILENAME_LEN); -// tsDiskCfg[index].level = level; -// tsDiskCfg[index].primary = primary; -// uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary); -// } - -#ifndef _STORAGE -// void taosReadDataDirCfg(char *v1, char *v2, char *v3) { -// if (tsDiskCfgNum == 1) { -// SDiskCfg *cfg = &tsDiskCfg[0]; -// uInfo("dataDir:%s, level:%d primary:%d is replaced by %s", cfg->dir, cfg->level, cfg->primary, v1); -// } -// taosAddDataDir(0, v1, 0, 1); -// tsDiskCfgNum = 1; -// } - -// void taosPrintDataDirCfg() { -// for (int i = 0; i < tsDiskCfgNum; ++i) { -// SDiskCfg *cfg = &tsDiskCfg[i]; -// uInfo(" dataDir: %s", cfg->dir); -// } -// } -#endif - - - -static void doInitGlobalConfig(void) { - osInit(); - srand(taosSafeRand()); #if 0 - SGlobalCfg cfg = {0}; - - - cfg.option = "dataDir"; - cfg.ptr = osDataDir(); - cfg.valType = TAOS_CFG_VTYPE_DATA_DIRCTORY; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = 0; - cfg.maxValue = 0; - cfg.ptrLength = TSDB_FILENAME_LEN; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - - cfg.option = "maxNumOfDistinctRes"; - cfg.ptr = &tsMaxNumOfDistinctResults; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW | TSDB_CFG_CTYPE_B_CLIENT; - cfg.minValue = 10 * 10000; - cfg.maxValue = 10000 * 10000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "minSlidingTime"; - cfg.ptr = &tsMinSlidingTime; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 1000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_MS; - taosAddConfigOption(cfg); - - cfg.option = "minIntervalTime"; - cfg.ptr = &tsMinIntervalTime; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 1; - cfg.maxValue = 1000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_MS; - taosAddConfigOption(cfg); - - cfg.option = "maxStreamCompDelay"; - cfg.ptr = &tsMaxStreamComputDelay; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 1000000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_MS; - taosAddConfigOption(cfg); - - cfg.option = "maxFirstStreamCompDelay"; - cfg.ptr = &tsStreamCompStartDelay; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 1000; - cfg.maxValue = 1000000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_MS; - taosAddConfigOption(cfg); - - cfg.option = "retryStreamCompDelay"; - cfg.ptr = &tsRetryStreamCompDelay; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 10; - cfg.maxValue = 1000000000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_MS; - - taosAddConfigOption(cfg); - cfg.option = "streamCompDelayRatio"; - cfg.ptr = &tsStreamComputDelayRatio; - cfg.valType = TAOS_CFG_VTYPE_FLOAT; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0.1f; - cfg.maxValue = 0.9f; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "compressMsgSize"; - cfg.ptr = &tsCompressMsgSize; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = -1; - cfg.maxValue = 100000000.0f; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "compressColData"; - cfg.ptr = &tsCompressColData; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = -1; - cfg.maxValue = 100000000.0f; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "maxWildCardsLength"; - cfg.ptr = &tsMaxWildCardsLen; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0; - cfg.maxValue = TSDB_MAX_FIELD_LEN; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_BYTE; - taosAddConfigOption(cfg); - - cfg.option = "maxRegexStringLen"; - cfg.ptr = &tsMaxRegexStringLen; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0; - cfg.maxValue = TSDB_MAX_FIELD_LEN; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_BYTE; - taosAddConfigOption(cfg); - - cfg.option = "maxNumOfOrderedRes"; - cfg.ptr = &tsMaxNumOfOrderedResults; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = TSDB_MAX_SQL_LEN; - cfg.maxValue = TSDB_MAX_ALLOWED_SQL_LEN; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "queryBufferSize"; - cfg.ptr = &tsQueryBufferSize; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = -1; - cfg.maxValue = 500000000000.0f; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_BYTE; - taosAddConfigOption(cfg); - - cfg.option = "retrieveBlockingModel"; - cfg.ptr = &tsRetrieveBlockingModel; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0; - cfg.maxValue = 1; - cfg.ptrLength = 1; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "keepColumnName"; - cfg.ptr = &tsKeepOriginalColumnName; - cfg.valType = TAOS_CFG_VTYPE_INT8; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW | TSDB_CFG_CTYPE_B_CLIENT; - cfg.minValue = 0; - cfg.maxValue = 1; - cfg.ptrLength = 1; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - - - cfg.option = "slaveQuery"; - cfg.ptr = &tsEnableSlaveQuery; - cfg.valType = TAOS_CFG_VTYPE_INT8; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0; - cfg.maxValue = 1; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - - cfg.option = "maxBinaryDisplayWidth"; - cfg.ptr = &tsMaxBinaryDisplayWidth; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT; - cfg.minValue = 1; - cfg.maxValue = 65536; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "tempDir"; - cfg.ptr = osTempDir(); - cfg.valType = TAOS_CFG_VTYPE_STRING; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_CLIENT; - cfg.minValue = 0; - cfg.maxValue = 0; - cfg.ptrLength = PATH_MAX; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - // enable kill long query - cfg.option = "deadLockKillQuery"; - cfg.ptr = &tsDeadLockKillQuery; - cfg.valType = TAOS_CFG_VTYPE_INT8; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW; - cfg.minValue = 0; - cfg.maxValue = 1; - cfg.ptrLength = 1; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - -#ifdef TD_TSZ - // lossy compress - cfg.option = "lossyColumns"; - cfg.ptr = lossyColumns; - cfg.valType = TAOS_CFG_VTYPE_STRING; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = 0; - cfg.maxValue = 0; - cfg.ptrLength = tListLen(lossyColumns); - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "fPrecision"; - cfg.ptr = &fPrecision; - cfg.valType = TAOS_CFG_VTYPE_DOUBLE; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = MIN_FLOAT; - cfg.maxValue = 100000; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - - taosAddConfigOption(cfg); - - cfg.option = "dPrecision"; - cfg.ptr = &dPrecision; - cfg.valType = TAOS_CFG_VTYPE_DOUBLE; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = 100000; - cfg.maxValue = 0; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "maxRange"; - cfg.ptr = &maxRange; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = 0; - cfg.maxValue = 65536; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - - cfg.option = "range"; - cfg.ptr = &curRange; - cfg.valType = TAOS_CFG_VTYPE_INT32; - cfg.cfgType = TSDB_CFG_CTYPE_B_CONFIG; - cfg.minValue = 0; - cfg.maxValue = 65536; - cfg.ptrLength = 0; - cfg.unitType = TAOS_CFG_UTYPE_NONE; - taosAddConfigOption(cfg); - assert(tsGlobalConfigNum == TSDB_CFG_MAX_NUM); -#else - // assert(tsGlobalConfigNum == TSDB_CFG_MAX_NUM - 5); -#endif - -#endif +void taosAddDataDir(int index, char *v1, int level, int primary) { + tstrncpy(tsDiskCfg[index].dir, v1, TSDB_FILENAME_LEN); + tsDiskCfg[index].level = level; + tsDiskCfg[index].primary = primary; + uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary); } -/* - * alter dnode 1 balance "vnode:1-dnode:2" - */ -bool taosCheckBalanceCfgOptions(const char *option, int32_t *vnodeId, int32_t *dnodeId) { - int len = (int)strlen(option); - if (strncasecmp(option, "vnode:", 6) != 0) { - return false; +void taosReadDataDirCfg(char *v1, char *v2, char *v3) { + if (tsDiskCfgNum == 1) { + SDiskCfg *cfg = &tsDiskCfg[0]; + uInfo("dataDir:%s, level:%d primary:%d is replaced by %s", cfg->dir, cfg->level, cfg->primary, v1); + } + taosAddDataDir(0, v1, 0, 1); + tsDiskCfgNum = 1; +} + +void taosPrintDataDirCfg() { + for (int i = 0; i < tsDiskCfgNum; ++i) { + SDiskCfg *cfg = &tsDiskCfg[i]; + uInfo(" dataDir: %s", cfg->dir); + } +} +#endif + +#if 0 +void taosInitGlobalCfg() { pthread_once(&tsInitGlobalCfgOnce, doInitGlobalConfig); } + +int32_t taosCheckAndPrintCfg() { + SEp ep = {0}; + if (debugFlag & DEBUG_TRACE || debugFlag & DEBUG_DEBUG || debugFlag & DEBUG_DUMP) { + taosSetAllDebugFlag(); + } + + if (tsLocalFqdn[0] == 0) { + taosGetFqdn(tsLocalFqdn); + } + + snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); + uInfo("localEp is: %s", tsLocalEp); + + if (tsFirst[0] == 0) { + strcpy(tsFirst, tsLocalEp); + } else { + taosGetFqdnPortFromEp(tsFirst, &ep); + snprintf(tsFirst, sizeof(tsFirst), "%s:%u", ep.fqdn, ep.port); + } + + if (tsSecond[0] == 0) { + strcpy(tsSecond, tsLocalEp); + } else { + taosGetFqdnPortFromEp(tsSecond, &ep); + snprintf(tsSecond, sizeof(tsSecond), "%s:%u", ep.fqdn, ep.port); + } + + taosCheckDataDirCfg(); + + if (taosDirExist(tsTempDir) != 0) { + return -1; + } + + taosGetSystemInfo(); + + tsSetLocale(); + + SGlobalCfg *cfg_timezone = taosGetConfigOption("timezone"); + if (cfg_timezone && cfg_timezone->cfgStatus == TAOS_CFG_CSTATUS_FILE) { + tsSetTimeZone(); + } + + if (tsNumOfCores <= 0) { + tsNumOfCores = 1; + } + + if (tsQueryBufferSize >= 0) { + tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; + } + + uInfo(" check global cfg completed"); + uInfo("=================================="); + taosPrintCfg(); + + return 0; +} + +void taosPrintLog(){} + +#endif + +static SConfig *tsCfg = NULL; + +static int32_t taosLoadCfg(SConfig *pCfg, const char *inputCfgDir, const char *envFile, const char *apolloUrl) { + char cfgDir[PATH_MAX] = {0}; + char cfgFile[PATH_MAX + 100] = {0}; + + taosExpandDir(inputCfgDir, cfgDir, PATH_MAX); + snprintf(cfgFile, sizeof(cfgFile), "%s" TD_DIRSEP "taos.cfg", cfgDir); + + if (cfgLoad(pCfg, CFG_STYPE_APOLLO_URL, apolloUrl) != 0) { + uError("failed to load from apollo url:%s since %s\n", apolloUrl, terrstr()); + return -1; + } + + if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgFile) != 0) { + if (cfgLoad(pCfg, CFG_STYPE_CFG_FILE, cfgDir) != 0) { + uError("failed to load from config file:%s since %s\n", cfgFile, terrstr()); + return -1; + } + } + + if (cfgLoad(pCfg, CFG_STYPE_ENV_FILE, envFile) != 0) { + uError("failed to load from env file:%s since %s\n", envFile, terrstr()); + return -1; + } + + if (cfgLoad(pCfg, CFG_STYPE_ENV_VAR, NULL) != 0) { + uError("failed to load from global env variables since %s\n", terrstr()); + return -1; + } + + return 0; +} + +static void taosAddClientLogCfg(SConfig *pCfg) { + cfgAddDir(pCfg, "logDir", osLogDir(), 1); + cfgAddFloat(pCfg, "minimalLogDirGB", 1.0f, 0.001f, 10000000, 1); + cfgAddInt32(pCfg, "numOfLogLines", tsNumOfLogLines, 1000, 2000000000, 1); + cfgAddBool(pCfg, "asyncLog", tsAsyncLog, 1); + cfgAddInt32(pCfg, "logKeepDays", 0, -365000, 365000, 1); + cfgAddInt32(pCfg, "cDebugFlag", cDebugFlag, 0, 255, 1); + cfgAddInt32(pCfg, "uDebugFlag", uDebugFlag, 0, 255, 1); + cfgAddInt32(pCfg, "rpcDebugFlag", rpcDebugFlag, 0, 255, 1); + cfgAddInt32(pCfg, "tmrDebugFlag", tmrDebugFlag, 0, 255, 1); + cfgAddInt32(pCfg, "jniDebugFlag", jniDebugFlag, 0, 255, 1); +} + +static void taosAddServerLogCfg(SConfig *pCfg) { + taosAddClientLogCfg(pCfg); + cfgAddInt32(pCfg, "dDebugFlag", dDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "vDebugFlag", vDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "mDebugFlag", mDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "qDebugFlag", qDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "wDebugFlag", wDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "sDebugFlag", sDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "tsdbDebugFlag", tsdbDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "tqDebugFlag", tqDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "fsDebugFlag", fsDebugFlag, 0, 255, 0); + cfgAddInt32(pCfg, "simDebugFlag", 143, 0, 255, 1); + cfgAddInt32(pCfg, "debugFlag", 0, 0, 255, 1); +} + +static void taosAddClientCfg(SConfig *pCfg) { + char defaultFqdn[TSDB_FQDN_LEN] = {0}; + int32_t defaultServerPort = 6030; + char defaultFirstEp[TSDB_EP_LEN] = {0}; + char defaultSecondEp[TSDB_EP_LEN] = {0}; + taosGetFqdn(defaultFqdn); + snprintf(defaultFirstEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); + snprintf(defaultSecondEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); + + cfgAddString(pCfg, "firstEp", defaultFirstEp, 1); + cfgAddString(pCfg, "secondEp", defaultSecondEp, 1); + cfgAddString(pCfg, "fqdn", defaultFqdn, 1); + cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056, 1); + cfgAddDir(pCfg, "tempDir", osTempDir(), 1); + cfgAddString(pCfg, "configDir", configDir, 1); + cfgAddString(pCfg, "scriptDir", configDir, 1); + cfgAddFloat(pCfg, "minimalTempDirGB", 1.0f, 0.001f, 10000000, 1); + cfgAddFloat(pCfg, "numOfThreadsPerCore", tsNumOfThreadsPerCore, 0, 10, 1); + cfgAddInt32(pCfg, "maxTmrCtrl", tsMaxTmrCtrl, 8, 2048, 1); + cfgAddInt32(pCfg, "rpcTimer", tsRpcTimer, 100, 3000, 1); + cfgAddInt32(pCfg, "rpcMaxTime", tsRpcMaxTime, 100, 7200, 1); + cfgAddBool(pCfg, "rpcForceTcp", tsRpcForceTcp, 1); + cfgAddInt32(pCfg, "shellActivityTimer", tsShellActivityTimer, 1, 120, 1); + cfgAddInt32(pCfg, "compressMsgSize", tsCompressMsgSize, -1, 100000000, 1); + cfgAddInt32(pCfg, "compressColData", tsCompressColData, -1, 100000000, 1); + cfgAddInt32(pCfg, "maxWildCardsLength", tsMaxWildCardsLen, 0, TSDB_MAX_FIELD_LEN, 1); + cfgAddInt32(pCfg, "maxRegexStringLen", tsMaxRegexStringLen, 0, TSDB_MAX_FIELD_LEN, 1); + cfgAddInt32(pCfg, "maxNumOfOrderedRes", tsMaxNumOfOrderedResults, 128, TSDB_MAX_ALLOWED_SQL_LEN, 1); + cfgAddBool(pCfg, "keepColumnName", tsKeepOriginalColumnName, 1); + cfgAddInt32(pCfg, "numOfCores", 1, 1, 100000, 1); + cfgAddBool(pCfg, "enableCoreFile", 0, 1); + cfgAddInt32(pCfg, "maxBinaryDisplayWidth", tsMaxBinaryDisplayWidth, 1, 65536, 1); + cfgAddString(pCfg, "version", version, 1); + cfgAddString(pCfg, "compatible_version", compatible_version, 1); + cfgAddString(pCfg, "gitinfo", gitinfo, 1); + cfgAddString(pCfg, "gitinfoOfInternal", gitinfoOfInternal, 1); + cfgAddString(pCfg, "buildinfo", buildinfo, 1); + cfgAddTimezone(pCfg, "timezone", osTimezone()); + cfgAddLocale(pCfg, "locale", osLocale()); + cfgAddCharset(pCfg, "charset", osCharset); +} + +static void taosAddServerCfg(SConfig *pCfg) { + taosAddClientCfg(pCfg); + cfgAddInt32(pCfg, "supportVnodes", 256, 0, 65536, 0); + cfgAddDir(pCfg, "dataDir", osDataDir(), 0); + cfgAddFloat(pCfg, "minimalDataDirGB", 2.0f, 0.001f, 10000000, 0); + cfgAddInt32(pCfg, "numOfCommitThreads", tsNumOfCommitThreads, 1, 100, 0); + cfgAddFloat(pCfg, "ratioOfQueryCores", tsRatioOfQueryCores, 0, 2, 0); + cfgAddInt32(pCfg, "maxNumOfDistinctRes", tsMaxNumOfDistinctResults, 10 * 10000, 10000 * 10000, 0); + cfgAddBool(pCfg, "telemetryReporting", tsEnableTelemetryReporting, 0); + cfgAddInt32(pCfg, "maxConnections", tsMaxConnections, 1, 100000, 0); + cfgAddInt32(pCfg, "maxShellConns", tsMaxShellConns, 10, 50000000, 0); + cfgAddInt32(pCfg, "statusInterval", tsStatusInterval, 1, 30, 0); + cfgAddInt32(pCfg, "minSlidingTime", tsMinSlidingTime, 10, 1000000, 0); + cfgAddInt32(pCfg, "minIntervalTime", tsMinIntervalTime, 1, 1000000, 0); + cfgAddInt32(pCfg, "maxStreamCompDelay", tsMaxStreamComputDelay, 10, 1000000000, 0); + cfgAddInt32(pCfg, "maxFirstStreamCompDelay", tsStreamCompStartDelay, 1000, 1000000000, 0); + cfgAddInt32(pCfg, "retryStreamCompDelay", tsRetryStreamCompDelay, 10, 1000000000, 0); + cfgAddFloat(pCfg, "streamCompDelayRatio", tsStreamComputDelayRatio, 0.1, 0.9, 0); + cfgAddInt32(pCfg, "queryBufferSize", tsQueryBufferSize, -1, 500000000000, 0); + cfgAddBool(pCfg, "retrieveBlockingModel", tsRetrieveBlockingModel, 0); + cfgAddBool(pCfg, "printAuth", tsPrintAuth, 0); + cfgAddBool(pCfg, "slaveQuery", tsEnableSlaveQuery, 0); + cfgAddBool(pCfg, "deadLockKillQuery", tsDeadLockKillQuery, 0); +} + +static void taosSetClientLogCfg(SConfig *pCfg) { + osSetLogDir(cfgGetItem(pCfg, "logDir")->str); + osSetDataReservedSpace(cfgGetItem(pCfg, "minimalLogDirGB")->fval); + tsNumOfLogLines = cfgGetItem(pCfg, "numOfLogLines")->i32; + tsAsyncLog = cfgGetItem(pCfg, "asyncLog")->bval; + tsLogKeepDays = cfgGetItem(pCfg, "logKeepDays")->i32; + cDebugFlag = cfgGetItem(pCfg, "cDebugFlag")->i32; + uDebugFlag = cfgGetItem(pCfg, "uDebugFlag")->i32; + rpcDebugFlag = cfgGetItem(pCfg, "rpcDebugFlag")->i32; + tmrDebugFlag = cfgGetItem(pCfg, "tmrDebugFlag")->i32; + jniDebugFlag = cfgGetItem(pCfg, "jniDebugFlag")->i32; +} + +static void taosSetServerLogCfg(SConfig *pCfg) { + dDebugFlag = cfgGetItem(pCfg, "dDebugFlag")->i32; + vDebugFlag = cfgGetItem(pCfg, "vDebugFlag")->i32; + mDebugFlag = cfgGetItem(pCfg, "mDebugFlag")->i32; + qDebugFlag = cfgGetItem(pCfg, "qDebugFlag")->i32; + wDebugFlag = cfgGetItem(pCfg, "wDebugFlag")->i32; + sDebugFlag = cfgGetItem(pCfg, "sDebugFlag")->i32; + tsdbDebugFlag = cfgGetItem(pCfg, "tsdbDebugFlag")->i32; + tqDebugFlag = cfgGetItem(pCfg, "tqDebugFlag")->i32; + fsDebugFlag = cfgGetItem(pCfg, "fsDebugFlag")->i32; + taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32); +} + +static void taosSetClientCfg(SConfig *pCfg) { + osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); + osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); +} + +static void taosSetServerCfg(SConfig *pCfg) { + osSetDataDir(cfgGetItem(pCfg, "dataDir")->str); + osSetTempReservedSpace(cfgGetItem(pCfg, "minimalDataDirGB")->fval); +} + +int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile, + const char *apolloUrl, bool tsc) { + SConfig *pCfg = cfgInit(); + if (tsCfg == NULL) return -1; + + if (tsc) { + aosAddClientLogCfg(pCfg); + } else { + ttaosAddServerLogCfg(pCfg); + } + + if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { + uError("failed to load cfg since %", terrstr()); + cfgCleanup(pCfg); + return -1; + } + + if (tsc) { + taosSetClientLogCfg(pCfg); + } else { + taosSetServerLogCfg(pCfg); + } + + if (taosInitLog(logname, logFileNum) != 0) { + printf("failed to init log file since %s\n", terrstr()); + cfgCleanup(pCfg); + return -1; + } + + cfgCleanup(pCfg); + return 0; +} + +int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloUrl, bool tsc) { + if (tsCfg != NULL) return 0; + tsCfg = cfgInit(); + if (tsCfg == NULL) return -1; + + if (tsc) { + taosAddServerCfg(tsCfg); + } else { + taosAddClientCfg(tsCfg); + } + + if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { + uError("failed to load cfg since %", terrstr()); + cfgCleanup(tsCfg); + tsCfg = NULL; + return -1; + } + + if (tsc) { + taosSetClientCfg(tsCfg); + } else { + taosSetServerCfg(tsCfg); + } + + cfgDumpCfg(tsCfg); + return 0; +} + +void taosCfgDynamicOptions(const char *option, const char *value) { + if (strcasecmp(option, "debugFlag") == 0) { + int32_t debugFlag = atoi(value); + taosSetAllDebugFlag(debugFlag); + } + + if (strcasecmp(option, "resetlog") == 0) { + taosResetLog(); + // taosPrintCfg(); } - - int pos = 0; - for (; pos < len; ++pos) { - if (option[pos] == '-') break; - } - - if (++pos >= len) return false; - if (strncasecmp(option + pos, "dnode:", 6) != 0) { - return false; - } - - *vnodeId = strtol(option + 6, NULL, 10); - *dnodeId = strtol(option + pos + 6, NULL, 10); - if (*vnodeId <= 1 || *dnodeId <= 0) { - return false; - } - - return true; } diff --git a/source/dnode/mgmt/daemon/CMakeLists.txt b/source/dnode/mgmt/daemon/CMakeLists.txt index a577344761..e07c15c95a 100644 --- a/source/dnode/mgmt/daemon/CMakeLists.txt +++ b/source/dnode/mgmt/daemon/CMakeLists.txt @@ -6,4 +6,4 @@ target_include_directories( PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc" ) -target_link_libraries(taosd dnode config util os) +target_link_libraries(taosd dnode util os) diff --git a/source/dnode/mgmt/daemon/inc/dmnInt.h b/source/dnode/mgmt/daemon/inc/dmnInt.h index 19ec147769..5e680aa77a 100644 --- a/source/dnode/mgmt/daemon/inc/dmnInt.h +++ b/source/dnode/mgmt/daemon/inc/dmnInt.h @@ -17,7 +17,7 @@ #ifndef _TD_DMN_INT_H_ #define _TD_DMN_INT_H_ -#include "config.h" +#include "tconfig.h" #include "dnode.h" #include "taoserror.h" #include "tglobal.h" diff --git a/source/dnode/mgmt/daemon/src/dmnCfg.c b/source/dnode/mgmt/daemon/src/dmnCfg.c index 5713df80c5..cfff49c890 100644 --- a/source/dnode/mgmt/daemon/src/dmnCfg.c +++ b/source/dnode/mgmt/daemon/src/dmnCfg.c @@ -16,47 +16,8 @@ #define _DEFAULT_SOURCE #include "dmnInt.h" -static int32_t dmnAddEpCfg(SConfig *pCfg) { - char defaultFqdn[TSDB_FQDN_LEN] = {0}; - if (taosGetFqdn(defaultFqdn) != 0) { - terrno = TAOS_SYSTEM_ERROR(errno); - return -1; - } - if (cfgAddString(pCfg, "fqdn", defaultFqdn) != 0) return -1; - - int32_t defaultServerPort = 6030; - if (cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056) != 0) return -1; - - char defaultFirstEp[TSDB_EP_LEN] = {0}; - char defaultSecondEp[TSDB_EP_LEN] = {0}; - snprintf(defaultFirstEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); - snprintf(defaultSecondEp, TSDB_EP_LEN, "%s:%d", defaultFqdn, defaultServerPort); - if (cfgAddString(pCfg, "firstEp", defaultFirstEp) != 0) return -1; - if (cfgAddString(pCfg, "secondEp", defaultSecondEp) != 0) return -1; - - return 0; -} - -static int32_t dmnAddDirCfg(SConfig *pCfg) { - if (cfgAddDir(pCfg, "dataDir", osDataDir()) != 0) return -1; - if (cfgAddDir(pCfg, "tempDir", osTempDir()) != 0) return -1; - if (cfgAddFloat(pCfg, "minimalDataDirGB", 2.0f, 0.001f, 10000000) != 0) return -1; - if (cfgAddFloat(pCfg, "minimalTempDirGB", 1.0f, 0.001f, 10000000) != 0) return -1; - return 0; -} - static int32_t dmnCheckDirCfg(SConfig *pCfg) { - osSetDataDir(cfgGetItem(pCfg, "dataDir")->str); - osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); - osSetTempReservedSpace(cfgGetItem(pCfg, "minimalDataDirGB")->fval); - osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); - return 0; -} -static int32_t dmnAddVersionCfg(SConfig *pCfg) { - if (cfgAddString(pCfg, "buildinfo", buildinfo) != 0) return -1; - if (cfgAddString(pCfg, "gitinfo", gitinfo) != 0) return -1; - if (cfgAddString(pCfg, "version", version) != 0) return -1; return 0; } @@ -167,7 +128,6 @@ void dmnDumpCfg(SConfig *pCfg) { printf("cfg:%s, value:%f src:%s\n", pItem->name, pItem->fval, cfgStypeStr(pItem->stype)); break; case CFG_DTYPE_STRING: - case CFG_DTYPE_IPSTR: case CFG_DTYPE_DIR: case CFG_DTYPE_LOCALE: case CFG_DTYPE_CHARSET: @@ -197,11 +157,11 @@ SDnodeObjCfg dmnGetObjCfg(SConfig *pCfg) { SDnodeObjCfg objCfg = {0}; objCfg.numOfSupportVnodes = cfgGetItem(pCfg, "supportVnodes")->i32; - objCfg.statusInterval = cfgGetItem(pCfg, "statusInterval")->i32; - objCfg.numOfThreadsPerCore = cfgGetItem(pCfg, "numOfThreadsPerCore")->fval; - objCfg.ratioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval; - objCfg.maxShellConns = cfgGetItem(pCfg, "maxShellConns")->i32; - objCfg.shellActivityTimer = cfgGetItem(pCfg, "shellActivityTimer")->i32; + // objCfg.statusInterval = cfgGetItem(pCfg, "statusInterval")->i32; + // objCfg.numOfThreadsPerCore = cfgGetItem(pCfg, "numOfThreadsPerCore")->fval; + // objCfg.ratioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval; + // objCfg.maxShellConns = cfgGetItem(pCfg, "maxShellConns")->i32; + // objCfg.shellActivityTimer = cfgGetItem(pCfg, "shellActivityTimer")->i32; tstrncpy(objCfg.dataDir, cfgGetItem(pCfg, "dataDir")->str, sizeof(objCfg.dataDir)); tstrncpy(objCfg.firstEp, cfgGetItem(pCfg, "firstEp")->str, sizeof(objCfg.firstEp)); diff --git a/source/dnode/mgmt/daemon/src/dmnLog.c b/source/dnode/mgmt/daemon/src/dmnLog.c index 147357c845..bd4a283ada 100644 --- a/source/dnode/mgmt/daemon/src/dmnLog.c +++ b/source/dnode/mgmt/daemon/src/dmnLog.c @@ -46,9 +46,6 @@ int32_t dmnSetLogCfg(SConfig *pCfg) { tsAsyncLog = cfgGetItem(pCfg, "asyncLog")->bval; tsNumOfLogLines = cfgGetItem(pCfg, "numOfLogLines")->i32; tsLogKeepDays = cfgGetItem(pCfg, "logKeepDays")->i32; - dDebugFlag = cfgGetItem(pCfg, "dDebugFlag")->i32; - vDebugFlag = cfgGetItem(pCfg, "vDebugFlag")->i32; - mDebugFlag = cfgGetItem(pCfg, "mDebugFlag")->i32; cDebugFlag = cfgGetItem(pCfg, "cDebugFlag")->i32; jniDebugFlag = cfgGetItem(pCfg, "jniDebugFlag")->i32; tmrDebugFlag = cfgGetItem(pCfg, "tmrDebugFlag")->i32; diff --git a/source/dnode/mgmt/impl/inc/dndInt.h b/source/dnode/mgmt/impl/inc/dndInt.h index 829fabd006..417bc1e041 100644 --- a/source/dnode/mgmt/impl/inc/dndInt.h +++ b/source/dnode/mgmt/impl/inc/dndInt.h @@ -35,6 +35,7 @@ extern "C" { #include "tthread.h" #include "ttime.h" #include "tworker.h" +#include "tglobal.h" #include "dnode.h" diff --git a/source/dnode/mgmt/impl/src/dndMgmt.c b/source/dnode/mgmt/impl/src/dndMgmt.c index 6ba6d9ce1c..9c08cd64cf 100644 --- a/source/dnode/mgmt/impl/src/dndMgmt.c +++ b/source/dnode/mgmt/impl/src/dndMgmt.c @@ -367,7 +367,7 @@ void dndSendStatusReq(SDnode *pDnode) { req.numOfSupportVnodes = pDnode->cfg.numOfSupportVnodes; memcpy(req.dnodeEp, pDnode->cfg.localEp, TSDB_EP_LEN); - req.clusterCfg.statusInterval = pDnode->cfg.statusInterval; + req.clusterCfg.statusInterval = tsStatusInterval; req.clusterCfg.checkTime = 0; char timestr[32] = "1970-01-01 00:00:00.00"; (void)taosParseTime(timestr, &req.clusterCfg.checkTime, (int32_t)strlen(timestr), TSDB_TIME_PRECISION_MILLI, 0); @@ -475,7 +475,7 @@ void dndProcessStartupReq(SDnode *pDnode, SRpcMsg *pReq) { static void *dnodeThreadRoutine(void *param) { SDnode *pDnode = param; SDnodeMgmt *pMgmt = &pDnode->dmgmt; - int32_t ms = pDnode->cfg.statusInterval * 1000; + int32_t ms = tsStatusInterval * 1000; setThreadName("dnode-hb"); diff --git a/source/dnode/mgmt/impl/src/dndMnode.c b/source/dnode/mgmt/impl/src/dndMnode.c index 3117a85561..ba165537ef 100644 --- a/source/dnode/mgmt/impl/src/dndMnode.c +++ b/source/dnode/mgmt/impl/src/dndMnode.c @@ -275,8 +275,6 @@ static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) { pOption->clusterId = dndGetClusterId(pDnode); pOption->cfg.sver = pDnode->env.sver; pOption->cfg.enableTelem = pDnode->env.enableTelem; - pOption->cfg.statusInterval = pDnode->cfg.statusInterval; - pOption->cfg.shellActivityTimer = pDnode->cfg.shellActivityTimer; } static void dndBuildMnodeDeployOption(SDnode *pDnode, SMnodeOpt *pOption) { diff --git a/source/dnode/mgmt/impl/src/dndTransport.c b/source/dnode/mgmt/impl/src/dndTransport.c index 0aae145d2f..7afd14e5ea 100644 --- a/source/dnode/mgmt/impl/src/dndTransport.c +++ b/source/dnode/mgmt/impl/src/dndTransport.c @@ -189,7 +189,7 @@ static int32_t dndInitClient(SDnode *pDnode) { rpcInit.cfp = dndProcessResponse; rpcInit.sessions = 1024; rpcInit.connType = TAOS_CONN_CLIENT; - rpcInit.idleTime = pDnode->cfg.shellActivityTimer * 1000; + rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.user = INTERNAL_USER; rpcInit.ckey = INTERNAL_CKEY; rpcInit.spi = 1; @@ -344,7 +344,7 @@ static int32_t dndInitServer(SDnode *pDnode) { STransMgmt *pMgmt = &pDnode->tmgmt; dndInitMsgFp(pMgmt); - int32_t numOfThreads = (int32_t)((pDnode->env.numOfCores * pDnode->cfg.numOfThreadsPerCore) / 2.0); + int32_t numOfThreads = (int32_t)((pDnode->env.numOfCores * tsNumOfThreadsPerCore) / 2.0); if (numOfThreads < 1) { numOfThreads = 1; } @@ -355,9 +355,9 @@ static int32_t dndInitServer(SDnode *pDnode) { rpcInit.label = "D-S"; rpcInit.numOfThreads = numOfThreads; rpcInit.cfp = dndProcessRequest; - rpcInit.sessions = pDnode->cfg.maxShellConns; + rpcInit.sessions = tsMaxShellConns; rpcInit.connType = TAOS_CONN_SERVER; - rpcInit.idleTime = pDnode->cfg.shellActivityTimer * 1000; + rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.afp = dndRetrieveUserAuthInfo; rpcInit.parent = pDnode; diff --git a/source/dnode/mgmt/impl/src/dndVnodes.c b/source/dnode/mgmt/impl/src/dndVnodes.c index b82d991179..f29e89485e 100644 --- a/source/dnode/mgmt/impl/src/dndVnodes.c +++ b/source/dnode/mgmt/impl/src/dndVnodes.c @@ -875,7 +875,7 @@ static int32_t dndInitVnodeWorkers(SDnode *pDnode) { int32_t maxFetchThreads = 4; int32_t minFetchThreads = TMIN(maxFetchThreads, pDnode->env.numOfCores); - int32_t minQueryThreads = TMAX((int32_t)(pDnode->env.numOfCores * pDnode->cfg.ratioOfQueryCores), 1); + int32_t minQueryThreads = TMAX((int32_t)(pDnode->env.numOfCores * tsRatioOfQueryCores), 1); int32_t maxQueryThreads = minQueryThreads; int32_t maxWriteThreads = TMAX(pDnode->env.numOfCores, 1); int32_t maxSyncThreads = TMAX(pDnode->env.numOfCores / 2, 1); diff --git a/source/dnode/mgmt/impl/test/sut/src/server.cpp b/source/dnode/mgmt/impl/test/sut/src/server.cpp index f7b5ab4599..985625b41c 100644 --- a/source/dnode/mgmt/impl/test/sut/src/server.cpp +++ b/source/dnode/mgmt/impl/test/sut/src/server.cpp @@ -25,11 +25,6 @@ void* serverLoop(void* param) { SDnodeObjCfg TestServer::BuildOption(const char* path, const char* fqdn, uint16_t port, const char* firstEp) { SDnodeObjCfg cfg = {0}; cfg.numOfSupportVnodes = 16; - cfg.statusInterval = 1; - cfg.numOfThreadsPerCore = 1; - cfg.ratioOfQueryCores = 1; - cfg.maxShellConns = 1000; - cfg.shellActivityTimer = 30; cfg.serverPort = port; strcpy(cfg.dataDir, path); snprintf(cfg.localEp, TSDB_EP_LEN, "%s:%u", fqdn, port); diff --git a/source/libs/CMakeLists.txt b/source/libs/CMakeLists.txt index da2ab5b425..aa6d204310 100644 --- a/source/libs/CMakeLists.txt +++ b/source/libs/CMakeLists.txt @@ -14,5 +14,4 @@ add_subdirectory(qcom) add_subdirectory(qworker) add_subdirectory(tfs) add_subdirectory(nodes) -add_subdirectory(config) add_subdirectory(scalar) diff --git a/source/libs/config/CMakeLists.txt b/source/libs/config/CMakeLists.txt deleted file mode 100644 index 596cc0b433..0000000000 --- a/source/libs/config/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -aux_source_directory(src CONFIG_SRC) -add_library(config STATIC ${CONFIG_SRC}) -target_include_directories( - config - PUBLIC "${CMAKE_SOURCE_DIR}/include/libs/config" - PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc" -) - -target_link_libraries(config os util common) - -if(${BUILD_TEST}) - ADD_SUBDIRECTORY(test) -endif(${BUILD_TEST}) \ No newline at end of file diff --git a/source/libs/config/inc/cfgInt.h b/source/libs/config/inc/cfgInt.h deleted file mode 100644 index 6497393792..0000000000 --- a/source/libs/config/inc/cfgInt.h +++ /dev/null @@ -1,47 +0,0 @@ - -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#ifndef _TD_CFG_INT_H_ -#define _TD_CFG_INT_H_ - -#include "config.h" -#include "taoserror.h" -#include "thash.h" -#include "tutil.h" -#include "ulog.h" -#include "tglobal.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct SConfig { - ECfgSrcType stype; - SHashObj *hash; -} SConfig; - -int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath); -int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath); -int32_t cfgLoadFromEnvVar(SConfig *pConfig); -int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url); - -int32_t cfgSetItem(SConfig *pConfig, const char *name, const char *value, ECfgSrcType stype); - -#ifdef __cplusplus -} -#endif - -#endif /*_TD_CFG_INT_H_*/ diff --git a/source/libs/config/src/cfgApolloUrl.c b/source/libs/config/src/cfgApolloUrl.c deleted file mode 100644 index f35eca70c3..0000000000 --- a/source/libs/config/src/cfgApolloUrl.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "cfgInt.h" - -int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) { - uInfo("load from apoll url %s", url); - return 0; -} \ No newline at end of file diff --git a/source/libs/config/src/cfgCfgFile.c b/source/libs/config/src/cfgCfgFile.c deleted file mode 100644 index 4eb835be7f..0000000000 --- a/source/libs/config/src/cfgCfgFile.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "cfgInt.h" - -int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) { - char *line, *name, *value, *value2, *value3; - int olen, vlen, vlen2, vlen3; - ssize_t _bytes = 0; - size_t len = 1024; - - FILE *fp = fopen(filepath, "r"); - if (fp == NULL) { - terrno = TAOS_SYSTEM_ERROR(errno); - return -1; - } - - line = malloc(len); - - while (!feof(fp)) { - memset(line, 0, len); - - name = value = value2 = value3 = NULL; - olen = vlen = vlen2 = vlen3 = 0; - - _bytes = tgetline(&line, &len, fp); - if (_bytes < 0) { - break; - } - - line[len - 1] = 0; - - paGetToken(line, &name, &olen); - if (olen == 0) continue; - name[olen] = 0; - - paGetToken(name + olen + 1, &value, &vlen); - if (vlen == 0) continue; - value[vlen] = 0; - - paGetToken(value + vlen + 1, &value2, &vlen2); - if (vlen2 != 0) { - value2[vlen2] = 0; - paGetToken(value2 + vlen2 + 1, &value3, &vlen3); - if (vlen3 != 0) value3[vlen3] = 0; - } - - cfgSetItem(pConfig, name, value, CFG_STYPE_CFG_FILE); - // taosReadConfigOption(name, value, value2, value3); - } - - fclose(fp); - tfree(line); - - uInfo("load from cfg file %s success", filepath); - return 0; -} \ No newline at end of file diff --git a/source/libs/config/src/cfgEnvFile.c b/source/libs/config/src/cfgEnvFile.c deleted file mode 100644 index a12d1cd1d5..0000000000 --- a/source/libs/config/src/cfgEnvFile.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "cfgInt.h" - -int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath) { - uInfo("load from env file %s", filepath); - return 0; -} \ No newline at end of file diff --git a/source/libs/config/src/cfgEnvVar.c b/source/libs/config/src/cfgEnvVar.c deleted file mode 100644 index c3b3df4047..0000000000 --- a/source/libs/config/src/cfgEnvVar.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "cfgInt.h" - -int32_t cfgLoadFromEnvVar(SConfig *pConfig) { - uInfo("load from global env variables"); - return 0; -} \ No newline at end of file diff --git a/source/libs/config/test/CMakeLists.txt b/source/libs/config/test/CMakeLists.txt deleted file mode 100644 index 1e63d5025d..0000000000 --- a/source/libs/config/test/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -enable_testing() - -aux_source_directory(. CFG_TEST_SRC) -add_executable(cfg_test ${CFG_TEST_SRC}) -target_link_libraries( - cfg_test - PUBLIC config - PUBLIC gtest_main -) - -add_test( - NAME cfg_test - COMMAND cfg_test -) diff --git a/source/os/src/osEnv.c b/source/os/src/osEnv.c index 6fad7e4f32..dc7662a406 100644 --- a/source/os/src/osEnv.c +++ b/source/os/src/osEnv.c @@ -31,6 +31,7 @@ typedef struct SOsEnv { char locale[TD_LOCALE_LEN]; char charset[TD_CHARSET_LEN]; int8_t daylight; + bool enableCoreFile; } SOsEnv; static SOsEnv env = {0}; @@ -73,6 +74,7 @@ void osSetLogReservedSpace(float sizeInGB) { env.logSpace.reserved = sizeInGB; } void osSetTempReservedSpace(float sizeInGB) { env.tempSpace.reserved = sizeInGB; } void osSetDataReservedSpace(float sizeInGB) { env.dataSpace.reserved = sizeInGB; } void osSetTimezone(const char *timezone) { taosSetSystemTimezone(timezone, env.timezone, &env.daylight); } +bool osSetEnableCore(bool enable) { env.enableCoreFile = enable; } void osInit() { srand(taosSafeRand()); diff --git a/source/libs/config/src/config.c b/source/util/src/tconfig.c similarity index 85% rename from source/libs/config/src/config.c rename to source/util/src/tconfig.c index b23826ceac..2d4965e820 100644 --- a/source/libs/config/src/config.c +++ b/source/util/src/tconfig.c @@ -14,12 +14,25 @@ */ #define _DEFAULT_SOURCE -#include "cfgInt.h" -#include "tep.h" -#include "tmsg.h" +#include "tconfig.h" +#include "taoserror.h" +#include "thash.h" +#include "tutil.h" +#include "ulog.h" #define CFG_NAME_PRINT_LEN 22 -#define CFG_SRC_PRINT_LEN 12 +#define CFG_SRC_PRINT_LEN 12 + +typedef struct SConfig { + ECfgSrcType stype; + SHashObj *hash; +} SConfig; + +int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath); +int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath); +int32_t cfgLoadFromEnvVar(SConfig *pConfig); +int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url); +int32_t cfgSetItem(SConfig *pConfig, const char *name, const char *value, ECfgSrcType stype); SConfig *cfgInit() { SConfig *pCfg = calloc(1, sizeof(SConfig)); @@ -131,23 +144,6 @@ static int32_t cfgCheckAndSetDir(SConfigItem *pItem, const char *inputDir) { return 0; } -static int32_t cfgCheckAndSetIpStr(SConfigItem *pItem, const char *ip) { - uint32_t value = taosInetAddr(ip); - if (value == INADDR_NONE) { - uError("ip:%s is not a valid ip address", ip); - return -1; - } - - tfree(pItem->str); - pItem->str = strdup(ip); - if (pItem->str == NULL) { - terrno = TSDB_CODE_OUT_OF_MEMORY; - return -1; - } - - return 0; -} - static int32_t cfgSetBool(SConfigItem *pItem, const char *value, ECfgSrcType stype) { bool tmp = false; if (strcasecmp(value, "true") == 0) { @@ -223,20 +219,6 @@ static int32_t cfgSetString(SConfigItem *pItem, const char *value, ECfgSrcType s return 0; } -static int32_t cfgSetIpStr(SConfigItem *pItem, const char *value, ECfgSrcType stype) { - char *tmp = strdup(value); - if (tmp == NULL || cfgCheckAndSetIpStr(pItem, value) != 0) { - free(tmp); - terrno = TSDB_CODE_OUT_OF_MEMORY; - uError("cfg:%s, type:%s src:%s value:%s failed to dup since %s, use last src:%s value:%s", pItem->name, - cfgDtypeStr(pItem->dtype), cfgStypeStr(stype), value, terrstr(), cfgStypeStr(pItem->stype), pItem->str); - return -1; - } - - pItem->stype = stype; - return 0; -} - static int32_t cfgSetDir(SConfigItem *pItem, const char *value, ECfgSrcType stype) { char *tmp = strdup(value); if (tmp == NULL || cfgCheckAndSetDir(pItem, value) != 0) { @@ -310,8 +292,6 @@ int32_t cfgSetItem(SConfig *pCfg, const char *name, const char *value, ECfgSrcTy return cfgSetFloat(pItem, value, stype); case CFG_DTYPE_STRING: return cfgSetString(pItem, value, stype); - case CFG_DTYPE_IPSTR: - return cfgSetIpStr(pItem, value, stype); case CFG_DTYPE_DIR: return cfgSetDir(pItem, value, stype); case CFG_DTYPE_TIMEZONE: @@ -366,43 +346,43 @@ static int32_t cfgAddItem(SConfig *pCfg, SConfigItem *pItem, const char *name) { return 0; } -int32_t cfgAddBool(SConfig *pCfg, const char *name, bool defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_BOOL, .bval = defaultVal}; +int32_t cfgAddBool(SConfig *pCfg, const char *name, bool defaultVal, bool tsc) { + SConfigItem item = {.dtype = CFG_DTYPE_BOOL, .bval = defaultVal, .tsc = tsc}; return cfgAddItem(pCfg, &item, name); } -int32_t cfgAddInt32(SConfig *pCfg, const char *name, int32_t defaultVal, int64_t minval, int64_t maxval) { +int32_t cfgAddInt32(SConfig *pCfg, const char *name, int32_t defaultVal, int64_t minval, int64_t maxval, bool tsc) { if (defaultVal < minval || defaultVal > maxval) { terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } - SConfigItem item = {.dtype = CFG_DTYPE_INT32, .i32 = defaultVal, .imin = minval, .imax = maxval}; + SConfigItem item = {.dtype = CFG_DTYPE_INT32, .i32 = defaultVal, .imin = minval, .imax = maxval, .tsc = tsc}; return cfgAddItem(pCfg, &item, name); } -int32_t cfgAddInt64(SConfig *pCfg, const char *name, int64_t defaultVal, int64_t minval, int64_t maxval) { +int32_t cfgAddInt64(SConfig *pCfg, const char *name, int64_t defaultVal, int64_t minval, int64_t maxval, bool tsc) { if (defaultVal < minval || defaultVal > maxval) { terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } - SConfigItem item = {.dtype = CFG_DTYPE_INT64, .i64 = defaultVal, .imin = minval, .imax = maxval}; + SConfigItem item = {.dtype = CFG_DTYPE_INT64, .i64 = defaultVal, .imin = minval, .imax = maxval, .tsc = tsc}; return cfgAddItem(pCfg, &item, name); } -int32_t cfgAddFloat(SConfig *pCfg, const char *name, float defaultVal, double minval, double maxval) { +int32_t cfgAddFloat(SConfig *pCfg, const char *name, float defaultVal, double minval, double maxval, bool tsc) { if (defaultVal < minval || defaultVal > maxval) { terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } - SConfigItem item = {.dtype = CFG_DTYPE_FLOAT, .fval = defaultVal, .fmin = minval, .fmax = maxval}; + SConfigItem item = {.dtype = CFG_DTYPE_FLOAT, .fval = defaultVal, .fmin = minval, .fmax = maxval, .tsc = tsc}; return cfgAddItem(pCfg, &item, name); } -int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_STRING}; +int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal, bool tsc) { + SConfigItem item = {.dtype = CFG_DTYPE_STRING, .tsc = tsc}; item.str = strdup(defaultVal); if (item.str == NULL) { terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -411,17 +391,8 @@ int32_t cfgAddString(SConfig *pCfg, const char *name, const char *defaultVal) { return cfgAddItem(pCfg, &item, name); } -int32_t cfgAddIpStr(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_IPSTR}; - if (cfgCheckAndSetIpStr(&item, defaultVal) != 0) { - return -1; - } - - return cfgAddItem(pCfg, &item, name); -} - -int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_DIR}; +int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal, bool tsc) { + SConfigItem item = {.dtype = CFG_DTYPE_DIR, .tsc = tsc}; if (cfgCheckAndSetDir(&item, defaultVal) != 0) { return -1; } @@ -430,7 +401,7 @@ int32_t cfgAddDir(SConfig *pCfg, const char *name, const char *defaultVal) { } int32_t cfgAddLocale(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_LOCALE}; + SConfigItem item = {.dtype = CFG_DTYPE_LOCALE, .tsc = 1}; if (cfgCheckAndSetLocale(&item, defaultVal) != 0) { return -1; } @@ -439,7 +410,7 @@ int32_t cfgAddLocale(SConfig *pCfg, const char *name, const char *defaultVal) { } int32_t cfgAddCharset(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_CHARSET}; + SConfigItem item = {.dtype = CFG_DTYPE_CHARSET, .tsc = 1}; if (cfgCheckAndSetCharset(&item, defaultVal) != 0) { return -1; } @@ -448,7 +419,7 @@ int32_t cfgAddCharset(SConfig *pCfg, const char *name, const char *defaultVal) { } int32_t cfgAddTimezone(SConfig *pCfg, const char *name, const char *defaultVal) { - SConfigItem item = {.dtype = CFG_DTYPE_TIMEZONE}; + SConfigItem item = {.dtype = CFG_DTYPE_TIMEZONE, .tsc = 1}; if (cfgCheckAndSetTimezone(&item, defaultVal) != 0) { return -1; } @@ -491,8 +462,6 @@ const char *cfgDtypeStr(ECfgDataType type) { return "float"; case CFG_DTYPE_STRING: return "string"; - case CFG_DTYPE_IPSTR: - return "ipstr"; case CFG_DTYPE_DIR: return "dir"; case CFG_DTYPE_LOCALE: @@ -506,7 +475,7 @@ const char *cfgDtypeStr(ECfgDataType type) { } } -void cfgDumpCfg(SConfig *pCfg) { +void cfgDumpCfg(SConfig *pCfg, bool tsc) { uInfo(" global config"); uInfo("================================================================="); @@ -515,6 +484,7 @@ void cfgDumpCfg(SConfig *pCfg) { SConfigItem *pItem = cfgIterate(pCfg, NULL); while (pItem != NULL) { + if (tsc && !pItem->tsc) continue; tstrncpy(src, cfgStypeStr(pItem->stype), CFG_SRC_PRINT_LEN); for (int32_t i = 0; i < CFG_SRC_PRINT_LEN; ++i) { if (src[i] == 0) src[i] = ' '; @@ -552,6 +522,7 @@ void cfgDumpCfg(SConfig *pCfg) { uInfo("================================================================="); } + #if 0 // int32_t cfgCheck(SConfig *pCfg) { // SConfigItem *pItem = NULL; @@ -630,4 +601,72 @@ void cfgDumpCfg(SConfig *pCfg) { // return 0; // } -#endif \ No newline at end of file +#endif + +int32_t cfgLoadFromEnvVar(SConfig *pConfig) { + uInfo("load from global env variables"); + return 0; +} + +int32_t cfgLoadFromEnvFile(SConfig *pConfig, const char *filepath) { + uInfo("load from env file %s", filepath); + return 0; +} + +int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) { + char *line, *name, *value, *value2, *value3; + int olen, vlen, vlen2, vlen3; + ssize_t _bytes = 0; + size_t len = 1024; + + FILE *fp = fopen(filepath, "r"); + if (fp == NULL) { + terrno = TAOS_SYSTEM_ERROR(errno); + return -1; + } + + line = malloc(len); + + while (!feof(fp)) { + memset(line, 0, len); + + name = value = value2 = value3 = NULL; + olen = vlen = vlen2 = vlen3 = 0; + + _bytes = tgetline(&line, &len, fp); + if (_bytes < 0) { + break; + } + + line[len - 1] = 0; + + paGetToken(line, &name, &olen); + if (olen == 0) continue; + name[olen] = 0; + + paGetToken(name + olen + 1, &value, &vlen); + if (vlen == 0) continue; + value[vlen] = 0; + + paGetToken(value + vlen + 1, &value2, &vlen2); + if (vlen2 != 0) { + value2[vlen2] = 0; + paGetToken(value2 + vlen2 + 1, &value3, &vlen3); + if (vlen3 != 0) value3[vlen3] = 0; + } + + cfgSetItem(pConfig, name, value, CFG_STYPE_CFG_FILE); + // taosReadConfigOption(name, value, value2, value3); + } + + fclose(fp); + tfree(line); + + uInfo("load from cfg file %s success", filepath); + return 0; +} + +int32_t cfgLoadFromApollUrl(SConfig *pConfig, const char *url) { + uInfo("load from apoll url %s", url); + return 0; +} \ No newline at end of file diff --git a/source/util/src/ttimer.c b/source/util/src/ttimer.c index ca0c6e9a24..2c04603269 100644 --- a/source/util/src/ttimer.c +++ b/source/util/src/ttimer.c @@ -111,7 +111,7 @@ typedef struct time_wheel_t { tmr_obj_t** slots; } time_wheel_t; -uint32_t tsMaxTmrCtrl = 512; +int32_t tsMaxTmrCtrl = 512; static pthread_once_t tmrModuleInit = PTHREAD_ONCE_INIT; static pthread_mutex_t tmrCtrlMutex; diff --git a/source/util/test/CMakeLists.txt b/source/util/test/CMakeLists.txt index ee0ade03b8..d6b779b6e3 100644 --- a/source/util/test/CMakeLists.txt +++ b/source/util/test/CMakeLists.txt @@ -51,4 +51,12 @@ target_link_libraries(queue_test os util gtest_main) add_test( NAME queue_test COMMAND queue_test +) + +# cfgTest +add_executable(cfgTest "cfgTest.cpp") +target_link_libraries(cfgTest os util gtest_main) +add_test( + NAME cfgTest + COMMAND cfgTest ) \ No newline at end of file diff --git a/source/libs/config/test/cfgTest.cpp b/source/util/test/cfgTest.cpp similarity index 81% rename from source/libs/config/test/cfgTest.cpp rename to source/util/test/cfgTest.cpp index 7c70e1a8f8..c352a4c21b 100644 --- a/source/libs/config/test/cfgTest.cpp +++ b/source/util/test/cfgTest.cpp @@ -10,7 +10,7 @@ */ #include -#include "config.h" +#include "tconfig.h" class CfgTest : public ::testing::Test { protected: @@ -43,7 +43,6 @@ TEST_F(CfgTest, 01_Str) { EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_INT64), "int64"); EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_FLOAT), "float"); EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_STRING), "string"); - EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_IPSTR), "ipstr"); EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_DIR), "dir"); EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_DIR), "dir"); EXPECT_STREQ(cfgDtypeStr(CFG_DTYPE_DIR), "dir"); @@ -55,15 +54,14 @@ TEST_F(CfgTest, 02_Basic) { SConfig *pConfig = cfgInit(); ASSERT_NE(pConfig, nullptr); - EXPECT_EQ(cfgAddBool(pConfig, "test_bool", 0), 0); - EXPECT_EQ(cfgAddInt32(pConfig, "test_int32", 1, 0, 16), 0); - EXPECT_EQ(cfgAddInt64(pConfig, "test_int64", 2, 0, 16), 0); - EXPECT_EQ(cfgAddFloat(pConfig, "test_float", 3, 0, 16), 0); - EXPECT_EQ(cfgAddString(pConfig, "test_string", "4"), 0); - EXPECT_EQ(cfgAddIpStr(pConfig, "test_ipstr", "192.168.0.1"), 0); - EXPECT_EQ(cfgAddDir(pConfig, "test_dir", "/tmp"), 0); + EXPECT_EQ(cfgAddBool(pConfig, "test_bool", 0, 0), 0); + EXPECT_EQ(cfgAddInt32(pConfig, "test_int32", 1, 0, 16, 0), 0); + EXPECT_EQ(cfgAddInt64(pConfig, "test_int64", 2, 0, 16, 0), 0); + EXPECT_EQ(cfgAddFloat(pConfig, "test_float", 3, 0, 16, 0), 0); + EXPECT_EQ(cfgAddString(pConfig, "test_string", "4", 0), 0); + EXPECT_EQ(cfgAddDir(pConfig, "test_dir", "/tmp", 0), 0); - EXPECT_EQ(cfgGetSize(pConfig), 7); + EXPECT_EQ(cfgGetSize(pConfig), 6); int32_t size = 0; SConfigItem *pItem = cfgIterate(pConfig, NULL); @@ -84,9 +82,6 @@ TEST_F(CfgTest, 02_Basic) { case CFG_DTYPE_STRING: printf("index:%d, cfg:%s value:%s\n", size, pItem->name, pItem->str); break; - case CFG_DTYPE_IPSTR: - printf("index:%d, cfg:%s value:%s\n", size, pItem->name, pItem->str); - break; case CFG_DTYPE_DIR: printf("index:%d, cfg:%s value:%s\n", size, pItem->name, pItem->str); break; @@ -99,7 +94,7 @@ TEST_F(CfgTest, 02_Basic) { } cfgCancelIterate(pConfig, pItem); - EXPECT_EQ(cfgGetSize(pConfig), 7); + EXPECT_EQ(cfgGetSize(pConfig), 6); pItem = cfgGetItem(pConfig, "test_bool"); EXPECT_EQ(pItem->stype, CFG_STYPE_DEFAULT); @@ -131,12 +126,6 @@ TEST_F(CfgTest, 02_Basic) { EXPECT_STREQ(pItem->name, "test_string"); EXPECT_STREQ(pItem->str, "4"); - pItem = cfgGetItem(pConfig, "test_ipstr"); - EXPECT_EQ(pItem->stype, CFG_STYPE_DEFAULT); - EXPECT_EQ(pItem->dtype, CFG_DTYPE_IPSTR); - EXPECT_STREQ(pItem->name, "test_ipstr"); - EXPECT_STREQ(pItem->str, "192.168.0.1"); - pItem = cfgGetItem(pConfig, "test_dir"); EXPECT_EQ(pItem->stype, CFG_STYPE_DEFAULT); EXPECT_EQ(pItem->dtype, CFG_DTYPE_DIR); From e321edbeb2c781739654a5bbb4574eadee145fe6 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 18:16:16 +0800 Subject: [PATCH 03/10] config --- include/util/tconfig.h | 1 - source/common/src/tglobal.c | 108 ++++++++++-------------------------- source/util/src/tconfig.c | 1 - 3 files changed, 29 insertions(+), 81 deletions(-) diff --git a/include/util/tconfig.h b/include/util/tconfig.h index 59e58683de..fe7002c8c0 100644 --- a/include/util/tconfig.h +++ b/include/util/tconfig.h @@ -42,7 +42,6 @@ typedef enum { CFG_DTYPE_INT64, CFG_DTYPE_FLOAT, CFG_DTYPE_STRING, - CFG_DTYPE_IPSTR, CFG_DTYPE_DIR, CFG_DTYPE_LOCALE, CFG_DTYPE_CHARSET, diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 3064703404..66ed0cf887 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -26,6 +26,8 @@ #include "tutil.h" #include "ulog.h" +SConfig *tsCfg = NULL; + // cluster int32_t tsVersion = 30000000; int32_t tsStatusInterval = 1; // second @@ -140,16 +142,14 @@ uint32_t tsMaxRange = 500; // max range uint32_t tsCurRange = 100; // range char tsCompressor[32] = "ZSTD_COMPRESSOR"; // ZSTD_COMPRESSOR or GZIP_COMPRESSOR -#if 0 -void taosAddDataDir(int index, char *v1, int level, int primary) { +static void taosAddDataDir(int32_t index, char *v1, int32_t level, int32_t primary) { tstrncpy(tsDiskCfg[index].dir, v1, TSDB_FILENAME_LEN); tsDiskCfg[index].level = level; tsDiskCfg[index].primary = primary; uTrace("dataDir:%s, level:%d primary:%d is configured", v1, level, primary); } - -void taosReadDataDirCfg(char *v1, char *v2, char *v3) { +static void taosReadDataDirCfg(char *v1, char *v2, char *v3) { if (tsDiskCfgNum == 1) { SDiskCfg *cfg = &tsDiskCfg[0]; uInfo("dataDir:%s, level:%d primary:%d is replaced by %s", cfg->dir, cfg->level, cfg->primary, v1); @@ -158,79 +158,12 @@ void taosReadDataDirCfg(char *v1, char *v2, char *v3) { tsDiskCfgNum = 1; } -void taosPrintDataDirCfg() { - for (int i = 0; i < tsDiskCfgNum; ++i) { +static void taosPrintDataDirCfg() { + for (int32_t i = 0; i < tsDiskCfgNum; ++i) { SDiskCfg *cfg = &tsDiskCfg[i]; uInfo(" dataDir: %s", cfg->dir); } } -#endif - -#if 0 -void taosInitGlobalCfg() { pthread_once(&tsInitGlobalCfgOnce, doInitGlobalConfig); } - -int32_t taosCheckAndPrintCfg() { - SEp ep = {0}; - if (debugFlag & DEBUG_TRACE || debugFlag & DEBUG_DEBUG || debugFlag & DEBUG_DUMP) { - taosSetAllDebugFlag(); - } - - if (tsLocalFqdn[0] == 0) { - taosGetFqdn(tsLocalFqdn); - } - - snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); - uInfo("localEp is: %s", tsLocalEp); - - if (tsFirst[0] == 0) { - strcpy(tsFirst, tsLocalEp); - } else { - taosGetFqdnPortFromEp(tsFirst, &ep); - snprintf(tsFirst, sizeof(tsFirst), "%s:%u", ep.fqdn, ep.port); - } - - if (tsSecond[0] == 0) { - strcpy(tsSecond, tsLocalEp); - } else { - taosGetFqdnPortFromEp(tsSecond, &ep); - snprintf(tsSecond, sizeof(tsSecond), "%s:%u", ep.fqdn, ep.port); - } - - taosCheckDataDirCfg(); - - if (taosDirExist(tsTempDir) != 0) { - return -1; - } - - taosGetSystemInfo(); - - tsSetLocale(); - - SGlobalCfg *cfg_timezone = taosGetConfigOption("timezone"); - if (cfg_timezone && cfg_timezone->cfgStatus == TAOS_CFG_CSTATUS_FILE) { - tsSetTimeZone(); - } - - if (tsNumOfCores <= 0) { - tsNumOfCores = 1; - } - - if (tsQueryBufferSize >= 0) { - tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; - } - - uInfo(" check global cfg completed"); - uInfo("=================================="); - taosPrintCfg(); - - return 0; -} - -void taosPrintLog(){} - -#endif - -static SConfig *tsCfg = NULL; static int32_t taosLoadCfg(SConfig *pCfg, const char *inputCfgDir, const char *envFile, const char *apolloUrl) { char cfgDir[PATH_MAX] = {0}; @@ -331,7 +264,7 @@ static void taosAddClientCfg(SConfig *pCfg) { cfgAddString(pCfg, "buildinfo", buildinfo, 1); cfgAddTimezone(pCfg, "timezone", osTimezone()); cfgAddLocale(pCfg, "locale", osLocale()); - cfgAddCharset(pCfg, "charset", osCharset); + cfgAddCharset(pCfg, "charset", osCharset()); } static void taosAddServerCfg(SConfig *pCfg) { @@ -388,11 +321,21 @@ static void taosSetServerLogCfg(SConfig *pCfg) { static void taosSetClientCfg(SConfig *pCfg) { osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); + + taosGetSystemInfo(); + if (tsNumOfCores <= 0) { + tsNumOfCores = 1; + } } static void taosSetServerCfg(SConfig *pCfg) { osSetDataDir(cfgGetItem(pCfg, "dataDir")->str); osSetTempReservedSpace(cfgGetItem(pCfg, "minimalDataDirGB")->fval); + + tsQueryBufferSize = cfgGetItem(pCfg, "queryBufferSize")->i32; + if (tsQueryBufferSize >= 0) { + tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; + } } int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile, @@ -401,13 +344,13 @@ int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDi if (tsCfg == NULL) return -1; if (tsc) { - aosAddClientLogCfg(pCfg); + taosAddClientLogCfg(pCfg); } else { - ttaosAddServerLogCfg(pCfg); + taosAddServerLogCfg(pCfg); } if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { - uError("failed to load cfg since %", terrstr()); + uError("failed to load cfg since %s", terrstr()); cfgCleanup(pCfg); return -1; } @@ -440,7 +383,7 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU } if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { - uError("failed to load cfg since %", terrstr()); + uError("failed to load cfg since %s", terrstr()); cfgCleanup(tsCfg); tsCfg = NULL; return -1; @@ -452,10 +395,17 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU taosSetServerCfg(tsCfg); } - cfgDumpCfg(tsCfg); + cfgDumpCfg(tsCfg, tsc); return 0; } +void taosCleanupCfg() { + if (tsCfg) { + cfgCleanup(tsCfg); + tsCfg = NULL; + } +} + void taosCfgDynamicOptions(const char *option, const char *value) { if (strcasecmp(option, "debugFlag") == 0) { int32_t debugFlag = atoi(value); diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 2d4965e820..4ced62ec37 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -509,7 +509,6 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc) { uInfo("%s %s %f", src, name, pItem->fval); break; case CFG_DTYPE_STRING: - case CFG_DTYPE_IPSTR: case CFG_DTYPE_DIR: case CFG_DTYPE_LOCALE: case CFG_DTYPE_CHARSET: From 955b89f3cb0b90a36a4baee8f27b465b1d4a8159 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 18:16:22 +0800 Subject: [PATCH 04/10] rpc config --- include/libs/transport/trpc.h | 8 +------- source/client/src/clientEnv.c | 6 +----- source/dnode/mgmt/impl/src/dndEnv.c | 3 +-- source/libs/transport/src/rpcMain.c | 10 +--------- source/libs/transport/src/trans.c | 2 +- 5 files changed, 5 insertions(+), 24 deletions(-) diff --git a/include/libs/transport/trpc.h b/include/libs/transport/trpc.h index befd309582..5e3860822e 100644 --- a/include/libs/transport/trpc.h +++ b/include/libs/transport/trpc.h @@ -84,13 +84,7 @@ typedef struct SRpcInit { void *parent; } SRpcInit; -typedef struct { - int32_t rpcTimer; - int32_t rpcMaxTime; - int32_t sver; -} SRpcCfg; - -int32_t rpcInit(SRpcCfg *pCfg); +int32_t rpcInit(); void rpcCleanup(); void *rpcOpen(const SRpcInit *pRpc); void rpcClose(void *); diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index f07048efbc..c8b0785a3a 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -225,11 +225,7 @@ void taos_init_imp(void) { initMsgHandleFp(); initQueryModuleMsgHandle(); - SRpcCfg rpcCfg = {0}; - rpcCfg.rpcTimer = cfgGetItem(tscCfg, "rpcTimer")->i32; - rpcCfg.rpcMaxTime = cfgGetItem(tscCfg, "rpcMaxTime")->i32; - rpcCfg.sver = 30000000; - rpcInit(&rpcCfg); + rpcInit(); SCatalogCfg cfg = {.maxDBCacheNum = 100, .maxTblCacheNum = 100}; catalogInit(&cfg); diff --git a/source/dnode/mgmt/impl/src/dndEnv.c b/source/dnode/mgmt/impl/src/dndEnv.c index 7c45474be4..510ffbfdbf 100644 --- a/source/dnode/mgmt/impl/src/dndEnv.c +++ b/source/dnode/mgmt/impl/src/dndEnv.c @@ -270,8 +270,7 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) { taosBlockSIGPIPE(); taosResolveCRC(); - SRpcCfg rpcCfg = {.rpcTimer = pCfg->rpcTimer, .rpcMaxTime = pCfg->rpcMaxTime, .sver = pCfg->sver}; - if (rpcInit(&rpcCfg) != 0) { + if (rpcInit() != 0) { dError("failed to init rpc since %s", terrstr()); dndCleanup(); return -1; diff --git a/source/libs/transport/src/rpcMain.c b/source/libs/transport/src/rpcMain.c index cfd01bf3be..e1319da162 100644 --- a/source/libs/transport/src/rpcMain.c +++ b/source/libs/transport/src/rpcMain.c @@ -42,8 +42,6 @@ int tsRpcMaxRetry; int tsRpcHeadSize; int tsRpcOverhead; -int32_t tsRpcForceTcp = 1; // disable this, means query, show command use udp protocol as default - SHashObj *tsFqdnHash; #ifndef USE_UV @@ -146,10 +144,6 @@ typedef struct SRpcConn { static int tsRpcRefId = -1; static int32_t tsRpcNum = 0; -int32_t tsRpcTimer = 300; -int32_t tsRpcMaxTime = 600; // seconds; -uint32_t tsVersion = 0; - // static pthread_once_t tsRpcInit = PTHREAD_ONCE_INIT; // server:0 client:1 tcp:2 udp:0 @@ -229,9 +223,7 @@ static void rpcInitImp(void) { tsFqdnHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_ENTRY_LOCK); } -int32_t rpcInit(SRpcCfg *pCfg) { - tsRpcTimer = pCfg->rpcTimer; - tsRpcMaxTime = pCfg->rpcMaxTime; +int32_t rpcInit() { pthread_once(&tsRpcInitOnce, rpcInitImp); return 0; } diff --git a/source/libs/transport/src/trans.c b/source/libs/transport/src/trans.c index 09aee6c8bc..b45683617f 100644 --- a/source/libs/transport/src/trans.c +++ b/source/libs/transport/src/trans.c @@ -112,7 +112,7 @@ void rpcSendRedirectRsp(void* thandle, const SEpSet* pEpSet) { int rpcReportProgress(void* pConn, char* pCont, int contLen) { return -1; } void rpcCancelRequest(int64_t rid) { return; } -int32_t rpcInit(SRpcCfg* pCfg) { +int32_t rpcInit() { // impl later return 0; } From da1351e31718a788c34fd05aec571894b66e4837 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 18:35:25 +0800 Subject: [PATCH 05/10] client config --- include/common/tep.h | 2 +- include/common/tglobal.h | 11 +- source/client/inc/clientInt.h | 7 -- source/client/src/clientCfg.c | 59 ----------- source/client/src/clientEnv.c | 8 +- source/client/src/clientImpl.c | 60 ++++++----- source/common/src/tep.c | 4 +- source/common/src/tglobal.c | 19 +++- source/dnode/mgmt/daemon/src/dmnLog.c | 129 ------------------------ source/dnode/mgmt/impl/src/dndMgmt.c | 2 +- source/libs/executor/src/executorimpl.c | 9 +- source/libs/qcom/src/queryUtil.c | 7 +- 12 files changed, 70 insertions(+), 247 deletions(-) delete mode 100644 source/client/src/clientCfg.c delete mode 100644 source/dnode/mgmt/daemon/src/dmnLog.c diff --git a/include/common/tep.h b/include/common/tep.h index 6ca180667b..584b8a5a71 100644 --- a/include/common/tep.h +++ b/include/common/tep.h @@ -23,7 +23,7 @@ typedef struct SBlockOrderInfo { // bool hasNull; } SBlockOrderInfo; -int taosGetFqdnPortFromEp(const char *ep, uint16_t defaultPort, SEp *pEp); +int taosGetFqdnPortFromEp(const char *ep, SEp *pEp); void addEpIntoEpSet(SEpSet *pEpSet, const char *fqdn, uint16_t port); bool isEpsetEqual(const SEpSet *s1, const SEpSet *s2); diff --git a/include/common/tglobal.h b/include/common/tglobal.h index e7f39f048d..1358bba2e2 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -24,9 +24,14 @@ extern "C" { #include "tdef.h" // cluster -extern int32_t tsVersion; -extern int32_t tsStatusInterval; -extern bool tsEnableTelemetryReporting; +extern char tsFirst[]; +extern char tsSecond[]; +extern char tsLocalFqdn[]; +extern char tsLocalEp[]; +extern uint16_t tsServerPort; +extern int32_t tsVersion; +extern int32_t tsStatusInterval; +extern bool tsEnableTelemetryReporting; // common extern int32_t tsRpcTimer; diff --git a/source/client/inc/clientInt.h b/source/client/inc/clientInt.h index 9ba2e2faef..523921634b 100644 --- a/source/client/inc/clientInt.h +++ b/source/client/inc/clientInt.h @@ -253,13 +253,6 @@ int hbAddConnInfo(SAppHbMgr* pAppHbMgr, SClientHbKey connKey, void* key, void* v // --- mq void hbMgrInitMqHbRspHandle(); - -// config -int32_t tscInitLog(const char *cfgDir, const char *envFile, const char *apolloUrl); -int32_t tscInitCfg(const char *cfgDir, const char *envFile, const char *apolloUrl); - -extern SConfig *tscCfg; - #ifdef __cplusplus } #endif diff --git a/source/client/src/clientCfg.c b/source/client/src/clientCfg.c deleted file mode 100644 index fb0b28a3ca..0000000000 --- a/source/client/src/clientCfg.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "clientInt.h" -#include "ulog.h" - - -int32_t tscCheckCfg(SConfig *pCfg) { - bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval; - taosSetCoreDump(enableCore); - - return 0; -} - -SConfig *tscInitCfgImp(const char *cfgDir, const char *envFile, const char *apolloUrl) { - SConfig *pCfg = cfgInit(); - if (pCfg == NULL) return NULL; - - if (tscAddCfg(pCfg) != 0) { - uError("failed to init tsc cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - if (tscLoadCfg(pCfg, cfgDir, envFile, apolloUrl) != 0) { - printf("failed to load tsc cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - if (tscCheckCfg(pCfg) != 0) { - uError("failed to check cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - cfgDumpCfg(pCfg); - return pCfg; -} - -int32_t tscInitCfg(const char *cfgDir, const char *envFile, const char *apolloUrl) { - tscCfg = tscInitCfgImp(cfgDir, envFile, apolloUrl); - if (tscCfg == NULL) return -1; - - return 0; -} \ No newline at end of file diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index c8b0785a3a..7ffb5dcd44 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -93,10 +93,10 @@ void *openTransporter(const char *user, const char *auth, int32_t numOfThread) { rpcInit.numOfThreads = numOfThread; rpcInit.cfp = processMsgFromServer; rpcInit.pfp = persistConnForSpecificMsg; - rpcInit.sessions = cfgGetItem(tscCfg, "maxConnections")->i32; + rpcInit.sessions = tsMaxConnections; rpcInit.connType = TAOS_CONN_CLIENT; rpcInit.user = (char *)user; - rpcInit.idleTime = cfgGetItem(tscCfg, "shellActivityTimer")->i32 * 1000; + rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.ckey = "key"; rpcInit.spi = 1; rpcInit.secret = (char *)auth; @@ -212,12 +212,12 @@ void taos_init_imp(void) { deltaToUtcInitOnce(); - if (tscInitLog(configDir, NULL, NULL) != 0) { + if (taosCreateLog("taoslog", 10, configDir, NULL, NULL, 1) != 0) { tscInitRes = -1; return; } - if (tscInitCfg(configDir, NULL, NULL) != 0) { + if (taosInitCfg(configDir, NULL, NULL, 1) != 0) { tscInitRes = -1; return; } diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index c9b2e371a2..f256feb251 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -11,7 +11,7 @@ #include "tpagedbuf.h" #include "tref.h" -static int32_t initEpSetFromCfg(const char* ip, uint16_t port, SCorEpSet* pEpSet); +static int32_t initEpSetFromCfg(const char* firstEp, const char* secondEp, SCorEpSet* pEpSet); static SMsgSendInfo* buildConnectMsg(SRequestObj* pRequest); static void destroySendMsgInfo(SMsgSendInfo* pMsgBody); static void setQueryResultFromRsp(SReqResultInfo* pResultInfo, const SRetrieveTableRsp* pRsp); @@ -80,7 +80,19 @@ TAOS* taos_connect_internal(const char* ip, const char* user, const char* pass, } SCorEpSet epSet = {0}; - initEpSetFromCfg(ip, port, &epSet); + if (ip) { + if (initEpSetFromCfg(ip, NULL, &epSet) < 0) { + return NULL; + } + + if (port) { + epSet.epSet.eps[0].port = port; + } + } else { + if (initEpSetFromCfg(tsFirst, tsSecond, &epSet) < 0) { + return NULL; + } + } char* key = getClusterKey(user, secretEncrypt, ip, port); SAppInstInfo** pInst = NULL; @@ -267,40 +279,32 @@ _return: return pRequest; } -int initEpSetFromCfg(const char* ip, uint16_t port, SCorEpSet* pEpSet) { - SConfigItem* pFirst = cfgGetItem(tscCfg, "firstEp"); - SConfigItem* pSecond = cfgGetItem(tscCfg, "secondEp"); - SConfigItem* pPort = cfgGetItem(tscCfg, "serverPort"); +int initEpSetFromCfg(const char* firstEp, const char* secondEp, SCorEpSet* pEpSet) { + pEpSet->version = 0; // init mnode ip set SEpSet* mgmtEpSet = &(pEpSet->epSet); mgmtEpSet->numOfEps = 0; mgmtEpSet->inUse = 0; - pEpSet->version = 0; - if (ip != NULL) { - taosGetFqdnPortFromEp(ip, (uint16_t)pPort->i32, &mgmtEpSet->eps[0]); + if (firstEp && firstEp[0] != 0) { + if (strlen(firstEp) >= TSDB_EP_LEN) { + terrno = TSDB_CODE_TSC_INVALID_FQDN; + return -1; + } + + taosGetFqdnPortFromEp(firstEp, &mgmtEpSet->eps[0]); mgmtEpSet->numOfEps++; - if (port) { - mgmtEpSet->eps[0].port = port; - } - } else { - if (pFirst->str[0] != 0) { - if (strlen(pFirst->str) >= TSDB_EP_LEN) { - terrno = TSDB_CODE_TSC_INVALID_FQDN; - return -1; - } - taosGetFqdnPortFromEp(pFirst->str, (uint16_t)pPort->i32, &mgmtEpSet->eps[0]); - mgmtEpSet->numOfEps++; - } - if (pSecond->str[0] != 0) { - if (strlen(pSecond->str) >= TSDB_EP_LEN) { - terrno = TSDB_CODE_TSC_INVALID_FQDN; - return -1; - } - taosGetFqdnPortFromEp(pSecond->str, (uint16_t)pPort->i32, &mgmtEpSet->eps[1]); - mgmtEpSet->numOfEps++; + } + + if (secondEp && secondEp[0] != 0) { + if (strlen(secondEp) >= TSDB_EP_LEN) { + terrno = TSDB_CODE_TSC_INVALID_FQDN; + return -1; } + + taosGetFqdnPortFromEp(secondEp, &mgmtEpSet->eps[mgmtEpSet->numOfEps]); + mgmtEpSet->numOfEps++; } if (mgmtEpSet->numOfEps == 0) { diff --git a/source/common/src/tep.c b/source/common/src/tep.c index 3e98cae279..970b6d954f 100644 --- a/source/common/src/tep.c +++ b/source/common/src/tep.c @@ -4,7 +4,7 @@ #include "tglobal.h" #include "tlockfree.h" -int taosGetFqdnPortFromEp(const char *ep, uint16_t defaultPort, SEp* pEp) { +int taosGetFqdnPortFromEp(const char *ep, SEp* pEp) { pEp->port = 0; strcpy(pEp->fqdn, ep); @@ -15,7 +15,7 @@ int taosGetFqdnPortFromEp(const char *ep, uint16_t defaultPort, SEp* pEp) { } if (pEp->port == 0) { - pEp->port = defaultPort; + pEp->port = tsServerPort; return -1; } diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 66ed0cf887..5200474cbd 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -29,9 +29,14 @@ SConfig *tsCfg = NULL; // cluster -int32_t tsVersion = 30000000; -int32_t tsStatusInterval = 1; // second -bool tsEnableTelemetryReporting = 0; +char tsFirst[TSDB_EP_LEN] = {0}; +char tsSecond[TSDB_EP_LEN] = {0}; +char tsLocalFqdn[TSDB_FQDN_LEN] = {0}; +char tsLocalEp[TSDB_EP_LEN] = {0}; // Local End Point, hostname:port +uint16_t tsServerPort = 6030; +int32_t tsVersion = 30000000; +int32_t tsStatusInterval = 1; // second +bool tsEnableTelemetryReporting = 0; // common int32_t tsRpcTimer = 300; @@ -321,11 +326,19 @@ static void taosSetServerLogCfg(SConfig *pCfg) { static void taosSetClientCfg(SConfig *pCfg) { osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); + tstrncpy(tsFirst, cfgGetItem(pCfg, "firstEp")->str, TSDB_EP_LEN); + tstrncpy(tsSecond, cfgGetItem(pCfg, "secondEp")->str, TSDB_EP_LEN); + tstrncpy(tsLocalFqdn, cfgGetItem(pCfg, "fqdn")->str, TSDB_EP_LEN); + tsServerPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32; + snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); taosGetSystemInfo(); if (tsNumOfCores <= 0) { tsNumOfCores = 1; } + + bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval; + taosSetCoreDump(enableCore); } static void taosSetServerCfg(SConfig *pCfg) { diff --git a/source/dnode/mgmt/daemon/src/dmnLog.c b/source/dnode/mgmt/daemon/src/dmnLog.c deleted file mode 100644 index bd4a283ada..0000000000 --- a/source/dnode/mgmt/daemon/src/dmnLog.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#define _DEFAULT_SOURCE -#include "dmnInt.h" - -int32_t dmnAddLogCfg(SConfig *pCfg) { - if (cfgAddDir(pCfg, "logDir", osLogDir()) != 0) return -1; - if (cfgAddFloat(pCfg, "minimalLogDirGB", 1.0f, 0.001f, 10000000) != 0) return -1; - if (cfgAddBool(pCfg, "asyncLog", 1) != 0) return -1; - if (cfgAddInt32(pCfg, "numOfLogLines", 10000000, 1000, 2000000000) != 0) return -1; - if (cfgAddInt32(pCfg, "logKeepDays", 0, -365000, 365000) != 0) return -1; - if (cfgAddInt32(pCfg, "debugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "dDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "vDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "mDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "cDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "jniDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "tmrDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "uDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "qDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "wDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "sDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "tsdbDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "tqDebugFlag", 0, 0, 255) != 0) return -1; - if (cfgAddInt32(pCfg, "fsDebugFlag", 0, 0, 255) != 0) return -1; - return 0; -} - -int32_t dmnSetLogCfg(SConfig *pCfg) { - osSetLogDir(cfgGetItem(pCfg, "logDir")->str); - osSetLogReservedSpace(cfgGetItem(pCfg, "minimalLogDirGB")->fval); - tsAsyncLog = cfgGetItem(pCfg, "asyncLog")->bval; - tsNumOfLogLines = cfgGetItem(pCfg, "numOfLogLines")->i32; - tsLogKeepDays = cfgGetItem(pCfg, "logKeepDays")->i32; - cDebugFlag = cfgGetItem(pCfg, "cDebugFlag")->i32; - jniDebugFlag = cfgGetItem(pCfg, "jniDebugFlag")->i32; - tmrDebugFlag = cfgGetItem(pCfg, "tmrDebugFlag")->i32; - uDebugFlag = cfgGetItem(pCfg, "uDebugFlag")->i32; - rpcDebugFlag = cfgGetItem(pCfg, "rpcDebugFlag")->i32; - qDebugFlag = cfgGetItem(pCfg, "qDebugFlag")->i32; - wDebugFlag = cfgGetItem(pCfg, "wDebugFlag")->i32; - sDebugFlag = cfgGetItem(pCfg, "sDebugFlag")->i32; - tsdbDebugFlag = cfgGetItem(pCfg, "tsdbDebugFlag")->i32; - tqDebugFlag = cfgGetItem(pCfg, "tqDebugFlag")->i32; - fsDebugFlag = cfgGetItem(pCfg, "fsDebugFlag")->i32; - - int32_t debugFlag = cfgGetItem(pCfg, "debugFlag")->i32; - taosSetAllDebugFlag(debugFlag); - - return 0; -} - -int32_t dmnInitLog(const char *cfgDir, const char *envFile, const char *apolloUrl) { - SConfig *pCfg = cfgInit(); - if (pCfg == NULL) return -1; - - if (dmnAddLogCfg(pCfg) != 0) { - printf("failed to add log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - if (dmnLoadCfg(pCfg, cfgDir, envFile, apolloUrl) != 0) { - printf("failed to load log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - if (dmnSetLogCfg(pCfg) != 0) { - printf("failed to set log cfg since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - if (taosInitLog("taosdlog", 1) != 0) { - printf("failed to init log file since %s\n", terrstr()); - cfgCleanup(pCfg); - return -1; - } - - cfgCleanup(pCfg); - return 0; -} - -int32_t dmnLoadCfg(SConfig *pConfig, const char *inputCfgDir, const char *envFile, const char *apolloUrl) { - char configDir[PATH_MAX] = {0}; - char configFile[PATH_MAX + 100] = {0}; - - taosExpandDir(inputCfgDir, configDir, PATH_MAX); - snprintf(configFile, sizeof(configFile), "%s" TD_DIRSEP "taos.cfg", configDir); - - if (cfgLoad(pConfig, CFG_STYPE_APOLLO_URL, apolloUrl) != 0) { - uError("failed to load from apollo url:%s since %s\n", apolloUrl, terrstr()); - return -1; - } - - if (cfgLoad(pConfig, CFG_STYPE_CFG_FILE, configFile) != 0) { - if (cfgLoad(pConfig, CFG_STYPE_CFG_FILE, configDir) != 0) { - uError("failed to load from config file:%s since %s\n", configFile, terrstr()); - return -1; - } - } - - if (cfgLoad(pConfig, CFG_STYPE_ENV_FILE, envFile) != 0) { - uError("failed to load from env file:%s since %s\n", envFile, terrstr()); - return -1; - } - - if (cfgLoad(pConfig, CFG_STYPE_ENV_VAR, NULL) != 0) { - uError("failed to load from global env variables since %s\n", terrstr()); - return -1; - } - - return 0; -} diff --git a/source/dnode/mgmt/impl/src/dndMgmt.c b/source/dnode/mgmt/impl/src/dndMgmt.c index 9c08cd64cf..421a6e659f 100644 --- a/source/dnode/mgmt/impl/src/dndMgmt.c +++ b/source/dnode/mgmt/impl/src/dndMgmt.c @@ -296,7 +296,7 @@ PRASE_DNODE_OVER: if (taosArrayGetSize(pMgmt->pDnodeEps) == 0) { SDnodeEp dnodeEp = {0}; dnodeEp.isMnode = 1; - taosGetFqdnPortFromEp(pDnode->cfg.firstEp, pDnode->cfg.serverPort, &dnodeEp.ep); + taosGetFqdnPortFromEp(pDnode->cfg.firstEp, &dnodeEp.ep); taosArrayPush(pMgmt->pDnodeEps, &dnodeEp); } diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index cc05d433eb..8200ab049c 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -132,8 +132,7 @@ do { \ } while (0) int32_t getMaximumIdleDurationSec() { - // todo - return 6; //tsShellActivityTimer * 2; + return tsShellActivityTimer * 2; } static int32_t getExprFunctionId(SExprInfo *pExprInfo) { @@ -5302,12 +5301,10 @@ SOperatorInfo* createExchangeOperatorInfo(const SArray* pSources, const SArray* rpcInit.label = "EX"; rpcInit.numOfThreads = 1; rpcInit.cfp = qProcessFetchRsp; - // todo - rpcInit.sessions = 50000; //tsMaxConnections; + rpcInit.sessions = tsMaxConnections; rpcInit.connType = TAOS_CONN_CLIENT; rpcInit.user = (char *)"root"; - // todo - rpcInit.idleTime = 6; //tsShellActivityTimer * 1000; + rpcInit.idleTime = tsShellActivityTimer * 1000; rpcInit.ckey = "key"; rpcInit.spi = 1; rpcInit.secret = (char *)"dcc5bed04851fec854c035b2e40263b6"; diff --git a/source/libs/qcom/src/queryUtil.c b/source/libs/qcom/src/queryUtil.c index b29817a318..a2165453d5 100644 --- a/source/libs/qcom/src/queryUtil.c +++ b/source/libs/qcom/src/queryUtil.c @@ -85,11 +85,10 @@ static void* pTaskQueue = NULL; int32_t initTaskQueue() { double factor = 4.0; - // todo - // int32_t numOfThreads = TMAX((int)(tsNumOfCores * tsNumOfThreadsPerCore / factor), 2); - int32_t numOfThreads = TMAX((int)(tsNumOfCores * 1.0f / factor), 2); - int32_t queueSize = 25000; //tsMaxConnections * 2; + int32_t numOfThreads = TMAX((int)(tsNumOfCores * tsNumOfThreadsPerCore / factor), 2); + + int32_t queueSize = tsMaxConnections * 2; pTaskQueue = taosInitScheduler(queueSize, numOfThreads, "tsc"); if (NULL == pTaskQueue) { qError("failed to init task queue"); From 546d3e84d5f73e5ec9c007b4037b358aa178c74b Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 19:06:39 +0800 Subject: [PATCH 06/10] daemon config --- include/common/tglobal.h | 2 + include/dnode/mgmt/dnode.h | 2 - include/util/tconfig.h | 2 +- source/common/src/tglobal.c | 13 +- source/dnode/mgmt/daemon/inc/dmnInt.h | 11 +- source/dnode/mgmt/daemon/src/dmnCfg.c | 144 ++------------------ source/dnode/mgmt/daemon/src/dmnMain.c | 20 +-- source/dnode/mgmt/impl/test/sut/src/sut.cpp | 2 - source/util/src/tconfig.c | 136 +++++++----------- 9 files changed, 84 insertions(+), 248 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 1358bba2e2..b54058d489 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -99,6 +99,8 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU void taosCleanupCfg(); void taosCfgDynamicOptions(const char *option, const char *value); +struct SConfig *taosGetCfg(); + #ifdef __cplusplus } #endif diff --git a/include/dnode/mgmt/dnode.h b/include/dnode/mgmt/dnode.h index c64397dd51..1c5d92eeb6 100644 --- a/include/dnode/mgmt/dnode.h +++ b/include/dnode/mgmt/dnode.h @@ -32,8 +32,6 @@ typedef struct { uint16_t numOfCommitThreads; bool enableTelem; bool printAuth; - int32_t rpcTimer; - int32_t rpcMaxTime; } SDnodeEnvCfg; /** diff --git a/include/util/tconfig.h b/include/util/tconfig.h index fe7002c8c0..2eb98a3ba8 100644 --- a/include/util/tconfig.h +++ b/include/util/tconfig.h @@ -95,7 +95,7 @@ int32_t cfgAddTimezone(SConfig *pCfg, const char *name, const char *defaultVal); const char *cfgStypeStr(ECfgSrcType type); const char *cfgDtypeStr(ECfgDataType type); -void cfgDumpCfg(SConfig *pCfg, bool tsc); +void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump); #ifdef __cplusplus } diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 5200474cbd..6a63c735e5 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -170,6 +170,10 @@ static void taosPrintDataDirCfg() { } } +struct SConfig *taosGetCfg() { + return tsCfg; +} + static int32_t taosLoadCfg(SConfig *pCfg, const char *inputCfgDir, const char *envFile, const char *apolloUrl) { char cfgDir[PATH_MAX] = {0}; char cfgFile[PATH_MAX + 100] = {0}; @@ -332,6 +336,11 @@ static void taosSetClientCfg(SConfig *pCfg) { tsServerPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32; snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); + SConfigItem *pItem = cfgGetItem(pCfg, "timezone"); + osSetTimezone(pItem->str); + uDebug("timezone format changed from %s to %s", pItem->str, osTimezone()); + cfgSetItem(pCfg, "timezone", osTimezone(), pItem->stype); + taosGetSystemInfo(); if (tsNumOfCores <= 0) { tsNumOfCores = 1; @@ -408,7 +417,7 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU taosSetServerCfg(tsCfg); } - cfgDumpCfg(tsCfg, tsc); + cfgDumpCfg(tsCfg, tsc, false); return 0; } @@ -429,4 +438,4 @@ void taosCfgDynamicOptions(const char *option, const char *value) { taosResetLog(); // taosPrintCfg(); } -} +} \ No newline at end of file diff --git a/source/dnode/mgmt/daemon/inc/dmnInt.h b/source/dnode/mgmt/daemon/inc/dmnInt.h index 5e680aa77a..fc1c3b4f2c 100644 --- a/source/dnode/mgmt/daemon/inc/dmnInt.h +++ b/source/dnode/mgmt/daemon/inc/dmnInt.h @@ -28,15 +28,10 @@ extern "C" { #endif -int32_t dmnAddLogCfg(SConfig *pCfg); -int32_t dmnInitLog(const char *cfgDir, const char *envFile, const char *apolloUrl); -int32_t dmnLoadCfg(SConfig *pConfig, const char *inputCfgDir, const char *envFile, const char *apolloUrl); +SDnodeEnvCfg dmnGetEnvCfg(); +SDnodeObjCfg dmnGetObjCfg(); -SConfig *dmnReadCfg(const char *cfgDir, const char *envFile, const char *apolloUrl); -SDnodeEnvCfg dmnGetEnvCfg(SConfig *pCfg); -SDnodeObjCfg dmnGetObjCfg(SConfig *pCfg); - -void dmnDumpCfg(SConfig *pCfg); +void dmnDumpCfg(); void dmnPrintVersion(); void dmnGenerateGrant(); diff --git a/source/dnode/mgmt/daemon/src/dmnCfg.c b/source/dnode/mgmt/daemon/src/dmnCfg.c index cfff49c890..9f8a44ab89 100644 --- a/source/dnode/mgmt/daemon/src/dmnCfg.c +++ b/source/dnode/mgmt/daemon/src/dmnCfg.c @@ -15,131 +15,10 @@ #define _DEFAULT_SOURCE #include "dmnInt.h" +#include "tconfig.h" -static int32_t dmnCheckDirCfg(SConfig *pCfg) { - - return 0; -} - -static int32_t dmnAddDnodeCfg(SConfig *pCfg) { - if (dmnAddEpCfg(pCfg) != 0) return -1; - if (dmnAddDirCfg(pCfg) != 0) return -1; - if (dmnAddVersionCfg(pCfg) != 0) return -1; - - if (cfgAddTimezone(pCfg, "timezone", "") != 0) return -1; - if (cfgAddLocale(pCfg, "locale", "") != 0) return -1; - if (cfgAddCharset(pCfg, "charset", "") != 0) return -1; - if (cfgAddInt32(pCfg, "numOfCores", 2, 1, 100000) != 0) return -1; - if (cfgAddInt32(pCfg, "numOfCommitThreads", 4, 1, 1000) != 0) return -1; - if (cfgAddBool(pCfg, "telemetryReporting", 0) != 0) return -1; - if (cfgAddBool(pCfg, "enableCoreFile", 0) != 0) return -1; - if (cfgAddInt32(pCfg, "supportVnodes", 256, 0, 65536) != 0) return -1; - if (cfgAddInt32(pCfg, "statusInterval", 1, 1, 30) != 0) return -1; - if (cfgAddFloat(pCfg, "numOfThreadsPerCore", 1, 0, 10) != 0) return -1; - if (cfgAddFloat(pCfg, "ratioOfQueryCores", 1, 0, 5) != 0) return -1; - if (cfgAddInt32(pCfg, "maxShellConns", 50000, 10, 50000000) != 0) return -1; - if (cfgAddInt32(pCfg, "shellActivityTimer", 3, 1, 120) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcTimer", 300, 100, 3000) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcMaxTime", 600, 100, 7200) != 0) return -1; - - return 0; -} - -static void dmnSetDnodeCfg(SConfig *pCfg) { - SConfigItem *pItem = cfgGetItem(pCfg, "timezone"); - osSetTimezone(pItem->str); - uDebug("timezone format changed from %s to %s", pItem->str, osTimezone()); - cfgSetItem(pCfg, "timezone", osTimezone(), pItem->stype); -} - -static int32_t dmnCheckCfg(SConfig *pCfg) { - bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval; - taosSetCoreDump(enableCore); - - dmnSetDnodeCfg(pCfg); - - if (dmnCheckDirCfg(pCfg) != 0) { - return -1; - } - - taosGetSystemInfo(); - - - if (tsNumOfCores <= 0) { - tsNumOfCores = 1; - } - - if (tsQueryBufferSize >= 0) { - tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; - } - - return 0; -} - -SConfig *dmnReadCfg(const char *cfgDir, const char *envFile, const char *apolloUrl) { - SConfig *pCfg = cfgInit(); - if (pCfg == NULL) return NULL; - - if (dmnAddLogCfg(pCfg) != 0) { - uError("failed to add log cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - if (dmnAddDnodeCfg(pCfg) != 0) { - uError("failed to init dnode cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - if (dmnLoadCfg(pCfg, cfgDir, envFile, apolloUrl) != 0) { - uError("failed to load cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - if (dmnCheckCfg(pCfg) != 0) { - uError("failed to check cfg since %s", terrstr()); - cfgCleanup(pCfg); - return NULL; - } - - cfgDumpCfg(pCfg); - return pCfg; -} - -void dmnDumpCfg(SConfig *pCfg) { - printf("taos global config:\n"); - printf("==================================\n"); - - SConfigItem *pItem = cfgIterate(pCfg, NULL); - while (pItem != NULL) { - switch (pItem->dtype) { - case CFG_DTYPE_BOOL: - printf("cfg:%s, value:%u src:%s\n", pItem->name, pItem->bval, cfgStypeStr(pItem->stype)); - break; - case CFG_DTYPE_INT32: - printf("cfg:%s, value:%d src:%s\n", pItem->name, pItem->i32, cfgStypeStr(pItem->stype)); - break; - case CFG_DTYPE_INT64: - printf("cfg:%s, value:%" PRId64 " src:%s\n", pItem->name, pItem->i64, cfgStypeStr(pItem->stype)); - break; - case CFG_DTYPE_FLOAT: - printf("cfg:%s, value:%f src:%s\n", pItem->name, pItem->fval, cfgStypeStr(pItem->stype)); - break; - case CFG_DTYPE_STRING: - case CFG_DTYPE_DIR: - case CFG_DTYPE_LOCALE: - case CFG_DTYPE_CHARSET: - case CFG_DTYPE_TIMEZONE: - printf("cfg:%s, value:%s src:%s\n", pItem->name, pItem->str, cfgStypeStr(pItem->stype)); - break; - } - pItem = cfgIterate(pCfg, pItem); - } -} - -SDnodeEnvCfg dmnGetEnvCfg(SConfig *pCfg) { +SDnodeEnvCfg dmnGetEnvCfg() { + SConfig *pCfg = taosGetCfg(); SDnodeEnvCfg envCfg = {0}; const char *vstr = cfgGetItem(pCfg, "version")->str; @@ -147,27 +26,24 @@ SDnodeEnvCfg dmnGetEnvCfg(SConfig *pCfg) { envCfg.numOfCores = cfgGetItem(pCfg, "numOfCores")->i32; envCfg.numOfCommitThreads = (uint16_t)cfgGetItem(pCfg, "numOfCommitThreads")->i32; envCfg.enableTelem = cfgGetItem(pCfg, "telemetryReporting")->bval; - envCfg.rpcMaxTime = cfgGetItem(pCfg, "rpcMaxTime")->i32; - envCfg.rpcTimer = cfgGetItem(pCfg, "rpcTimer")->i32; - return envCfg; } -SDnodeObjCfg dmnGetObjCfg(SConfig *pCfg) { +SDnodeObjCfg dmnGetObjCfg() { + SConfig *pCfg = taosGetCfg(); SDnodeObjCfg objCfg = {0}; objCfg.numOfSupportVnodes = cfgGetItem(pCfg, "supportVnodes")->i32; - // objCfg.statusInterval = cfgGetItem(pCfg, "statusInterval")->i32; - // objCfg.numOfThreadsPerCore = cfgGetItem(pCfg, "numOfThreadsPerCore")->fval; - // objCfg.ratioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval; - // objCfg.maxShellConns = cfgGetItem(pCfg, "maxShellConns")->i32; - // objCfg.shellActivityTimer = cfgGetItem(pCfg, "shellActivityTimer")->i32; tstrncpy(objCfg.dataDir, cfgGetItem(pCfg, "dataDir")->str, sizeof(objCfg.dataDir)); - tstrncpy(objCfg.firstEp, cfgGetItem(pCfg, "firstEp")->str, sizeof(objCfg.firstEp)); tstrncpy(objCfg.secondEp, cfgGetItem(pCfg, "secondEp")->str, sizeof(objCfg.firstEp)); objCfg.serverPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32; tstrncpy(objCfg.localFqdn, cfgGetItem(pCfg, "fqdn")->str, sizeof(objCfg.localFqdn)); snprintf(objCfg.localEp, sizeof(objCfg.localEp), "%s:%u", objCfg.localFqdn, objCfg.serverPort); return objCfg; +} + +void dmnDumpCfg() { + SConfig *pCfg = taosGetCfg(); + cfgDumpCfg(pCfg, 0, 1); } \ No newline at end of file diff --git a/source/dnode/mgmt/daemon/src/dmnMain.c b/source/dnode/mgmt/daemon/src/dmnMain.c index 62f0db5fc5..94b480c23d 100644 --- a/source/dnode/mgmt/daemon/src/dmnMain.c +++ b/source/dnode/mgmt/daemon/src/dmnMain.c @@ -72,14 +72,14 @@ static int32_t dmnParseOption(int32_t argc, char const *argv[]) { return 0; } -int32_t dmnRunDnode(SConfig *pCfg) { - SDnodeEnvCfg envCfg = dmnGetEnvCfg(pCfg); +int32_t dmnRunDnode() { + SDnodeEnvCfg envCfg = dmnGetEnvCfg(); if (dndInit(&envCfg) != 0) { uInfo("Failed to start TDengine, please check the log"); return -1; } - SDnodeObjCfg objCfg = dmnGetObjCfg(pCfg); + SDnodeObjCfg objCfg = dmnGetObjCfg(); SDnode *pDnode = dndCreate(&objCfg); if (pDnode == NULL) { uInfo("Failed to start TDengine, please check the log"); @@ -113,23 +113,23 @@ int main(int argc, char const *argv[]) { return 0; } - if (dmnInitLog(configDir, dmn.envFile, dmn.apolloUrl) != 0) { + if (taosCreateLog("taosdlog", 1, configDir, dmn.envFile, dmn.apolloUrl, 1) != 0) { + uInfo("Failed to start TDengine since read config error"); return -1; } - SConfig *pCfg = dmnReadCfg(configDir, dmn.envFile, dmn.apolloUrl); - if (pCfg == NULL) { + if (taosInitCfg(configDir, dmn.envFile, dmn.apolloUrl, 1) != 0) { uInfo("Failed to start TDengine since read config error"); return -1; } if (dmn.dumpConfig) { - dmnDumpCfg(pCfg); - cfgCleanup(pCfg); + dmnDumpCfg(); + taosCleanupCfg(); return 0; } - int32_t code = dmnRunDnode(pCfg); - cfgCleanup(pCfg); + int32_t code = dmnRunDnode(); + taosCleanupCfg(); return code; } diff --git a/source/dnode/mgmt/impl/test/sut/src/sut.cpp b/source/dnode/mgmt/impl/test/sut/src/sut.cpp index 5d2abd86c3..56fd1c91c8 100644 --- a/source/dnode/mgmt/impl/test/sut/src/sut.cpp +++ b/source/dnode/mgmt/impl/test/sut/src/sut.cpp @@ -43,8 +43,6 @@ void Testbase::Init(const char* path, int16_t port) { SDnodeEnvCfg cfg = {0}; cfg.numOfCommitThreads = 1; cfg.numOfCores = 1; - cfg.rpcMaxTime = 600; - cfg.rpcTimer = 300; dndInit(&cfg); char fqdn[] = "localhost"; diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 4ced62ec37..839ced7f50 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -475,9 +475,16 @@ const char *cfgDtypeStr(ECfgDataType type) { } } -void cfgDumpCfg(SConfig *pCfg, bool tsc) { - uInfo(" global config"); - uInfo("================================================================="); +void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) { + if (dump) { + printf(" global config"); + printf("\n"); + printf("================================================================="); + printf("\n"); + } else { + uInfo(" global config"); + uInfo("================================================================="); + } char src[CFG_SRC_PRINT_LEN + 1] = {0}; char name[CFG_NAME_PRINT_LEN + 1] = {0}; @@ -497,111 +504,62 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc) { switch (pItem->dtype) { case CFG_DTYPE_BOOL: - uInfo("%s %s %u", src, name, pItem->bval); + if (dump) { + printf("%s %s %u", src, name, pItem->bval); + printf("\n"); + } else { + uInfo("%s %s %u", src, name, pItem->bval); + } + break; case CFG_DTYPE_INT32: - uInfo("%s %s %d", src, name, pItem->i32); + if (dump) { + printf("%s %s %d", src, name, pItem->i32); + printf("\n"); + } else { + uInfo("%s %s %d", src, name, pItem->i32); + } break; case CFG_DTYPE_INT64: - uInfo("%s %s %" PRId64, src, name, pItem->i64); + if (dump) { + printf("%s %s %" PRId64, src, name, pItem->i64); + printf("\n"); + } else { + uInfo("%s %s %" PRId64, src, name, pItem->i64); + } break; case CFG_DTYPE_FLOAT: - uInfo("%s %s %f", src, name, pItem->fval); + if (dump) { + printf("%s %s %f", src, name, pItem->fval); + printf("\n"); + } else { + uInfo("%s %s %f", src, name, pItem->fval); + } break; case CFG_DTYPE_STRING: case CFG_DTYPE_DIR: case CFG_DTYPE_LOCALE: case CFG_DTYPE_CHARSET: case CFG_DTYPE_TIMEZONE: - uInfo("%s %s %s", src, name, pItem->str); + if (dump) { + printf("%s %s %s", src, name, pItem->str); + printf("\n"); + } else { + uInfo("%s %s %s", src, name, pItem->str); + } break; } pItem = cfgIterate(pCfg, pItem); } - uInfo("================================================================="); + if (dump) { + printf("================================================================="); + printf("\n"); + } else { + uInfo("================================================================="); + } } -#if 0 -// int32_t cfgCheck(SConfig *pCfg) { -// SConfigItem *pItem = NULL; - -// pItem = cfgGetItem(pCfg, "serverPort"); -// if (pItem != NULL) { -// tsServerPort = (uint16_t)pItem->i32; -// } - -// pItem = cfgGetItem(pCfg, "firstEp"); -// if (pItem != NULL) { -// tstrncpy(tsFirst, pItem->str, TSDB_EP_LEN); -// } - -// snprintf(tsLocalEp, TSDB_EP_LEN, "%s:%u", tsLocalFqdn, tsServerPort); -// uInfo("localEp is: %s", tsLocalEp); - -// SEp ep = {0}; -// if (tsFirst[0] == 0) { -// strcpy(tsFirst, tsLocalEp); -// } else { -// taosGetFqdnPortFromEp(tsFirst, &ep); -// snprintf(tsFirst, TSDB_EP_LEN, "%s:%u", ep.fqdn, ep.port); -// } - -// pItem = cfgGetItem(pCfg, "secondEp"); -// if (pItem != NULL) { -// tstrncpy(tsSecond, pItem->str, TSDB_EP_LEN); -// } - -// if (tsSecond[0] == 0) { -// strcpy(tsSecond, tsLocalEp); -// } else { -// taosGetFqdnPortFromEp(tsSecond, &ep); -// snprintf(tsSecond, TSDB_EP_LEN, "%s:%u", ep.fqdn, ep.port); -// } - -// pItem = cfgGetItem(pCfg, "dataDir"); -// if (pItem != NULL) { -// tstrncpy(osDataDir(), pItem->str, PATH_MAX); -// } - -// if (tsDiskCfgNum <= 0) { -// taosAddDataDir(0, osDataDir(), 0, 1); -// tsDiskCfgNum = 1; -// uTrace("dataDir:%s, level:0 primary:1 is configured by default", osDataDir()); -// } - -// if (taosDirExist(osTempDir()) != 0) { -// return -1; -// } - -// taosGetSystemInfo(); - -// tsSetLocale(); - -// // SGlobalCfg *cfg_timezone = taosGetConfigOption("timezone"); -// // if (cfg_timezone && cfg_timezone->cfgStatus == TAOS_CFG_CSTATUS_FILE) { -// tsSetTimeZone(); -// // } - -// pItem = cfgGetItem(pCfg, "numOfCores"); -// if (pItem != NULL) { -// tsNumOfCores = pItem->i32; -// } - -// if (tsNumOfCores <= 0) { -// tsNumOfCores = 1; -// } - -// if (tsQueryBufferSize >= 0) { -// tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; -// } - -// cfgPrintCfg(pCfg); - -// return 0; -// } -#endif - int32_t cfgLoadFromEnvVar(SConfig *pConfig) { uInfo("load from global env variables"); return 0; From d15e60d1ce059337c30f558472a0c6a785aaa0ee Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 19:47:24 +0800 Subject: [PATCH 07/10] fix crash --- source/dnode/mgmt/impl/test/sut/src/sut.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/dnode/mgmt/impl/test/sut/src/sut.cpp b/source/dnode/mgmt/impl/test/sut/src/sut.cpp index 56fd1c91c8..0073d0f1a8 100644 --- a/source/dnode/mgmt/impl/test/sut/src/sut.cpp +++ b/source/dnode/mgmt/impl/test/sut/src/sut.cpp @@ -40,10 +40,7 @@ void Testbase::InitLog(const char* path) { } void Testbase::Init(const char* path, int16_t port) { - SDnodeEnvCfg cfg = {0}; - cfg.numOfCommitThreads = 1; - cfg.numOfCores = 1; - dndInit(&cfg); + dndInit(); char fqdn[] = "localhost"; char firstEp[TSDB_EP_LEN] = {0}; From 5e3e0485694167821c85d62dd52f59b43357443f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 19:47:32 +0800 Subject: [PATCH 08/10] config --- include/dnode/mgmt/dnode.h | 18 +------------- source/common/src/tglobal.c | 30 ++++++++++++++--------- source/dnode/mgmt/daemon/inc/dmnInt.h | 1 - source/dnode/mgmt/daemon/src/dmnCfg.c | 12 --------- source/dnode/mgmt/daemon/src/dmnMain.c | 14 +++++------ source/dnode/mgmt/impl/inc/dndEnv.h | 6 ----- source/dnode/mgmt/impl/src/dndBnode.c | 2 +- source/dnode/mgmt/impl/src/dndEnv.c | 14 +++++------ source/dnode/mgmt/impl/src/dndMgmt.c | 4 +-- source/dnode/mgmt/impl/src/dndMnode.c | 4 +-- source/dnode/mgmt/impl/src/dndQnode.c | 2 +- source/dnode/mgmt/impl/src/dndSnode.c | 2 +- source/dnode/mgmt/impl/src/dndTransport.c | 2 +- source/dnode/mgmt/impl/src/dndVnodes.c | 10 ++++---- 14 files changed, 45 insertions(+), 76 deletions(-) diff --git a/include/dnode/mgmt/dnode.h b/include/dnode/mgmt/dnode.h index 1c5d92eeb6..a929f7a3fb 100644 --- a/include/dnode/mgmt/dnode.h +++ b/include/dnode/mgmt/dnode.h @@ -25,22 +25,12 @@ extern "C" { /* ------------------------ TYPES EXPOSED ---------------- */ typedef struct SDnode SDnode; -/* ------------------------ Environment ------------------ */ -typedef struct { - int32_t sver; - int32_t numOfCores; - uint16_t numOfCommitThreads; - bool enableTelem; - bool printAuth; -} SDnodeEnvCfg; - /** * @brief Initialize the environment * - * @param pOption Option of the environment * @return int32_t 0 for success and -1 for failure */ -int32_t dndInit(const SDnodeEnvCfg *pCfg); +int32_t dndInit(); /** * @brief clear the environment @@ -51,12 +41,6 @@ void dndCleanup(); /* ------------------------ SDnode ----------------------- */ typedef struct { int32_t numOfSupportVnodes; - // int32_t statusInterval; - // float numOfThreadsPerCore; - // float ratioOfQueryCores; - // int32_t maxShellConns; - // int32_t shellActivityTimer; - uint16_t serverPort; char dataDir[TSDB_FILENAME_LEN]; char localEp[TSDB_EP_LEN]; diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 6a63c735e5..320e319c95 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -220,7 +220,6 @@ static void taosAddClientLogCfg(SConfig *pCfg) { } static void taosAddServerLogCfg(SConfig *pCfg) { - taosAddClientLogCfg(pCfg); cfgAddInt32(pCfg, "dDebugFlag", dDebugFlag, 0, 255, 0); cfgAddInt32(pCfg, "vDebugFlag", vDebugFlag, 0, 255, 0); cfgAddInt32(pCfg, "mDebugFlag", mDebugFlag, 0, 255, 0); @@ -277,7 +276,6 @@ static void taosAddClientCfg(SConfig *pCfg) { } static void taosAddServerCfg(SConfig *pCfg) { - taosAddClientCfg(pCfg); cfgAddInt32(pCfg, "supportVnodes", 256, 0, 65536, 0); cfgAddDir(pCfg, "dataDir", osDataDir(), 0); cfgAddFloat(pCfg, "minimalDataDirGB", 2.0f, 0.001f, 10000000, 0); @@ -324,7 +322,6 @@ static void taosSetServerLogCfg(SConfig *pCfg) { tsdbDebugFlag = cfgGetItem(pCfg, "tsdbDebugFlag")->i32; tqDebugFlag = cfgGetItem(pCfg, "tqDebugFlag")->i32; fsDebugFlag = cfgGetItem(pCfg, "fsDebugFlag")->i32; - taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32); } static void taosSetClientCfg(SConfig *pCfg) { @@ -342,12 +339,15 @@ static void taosSetClientCfg(SConfig *pCfg) { cfgSetItem(pCfg, "timezone", osTimezone(), pItem->stype); taosGetSystemInfo(); - if (tsNumOfCores <= 0) { - tsNumOfCores = 1; + if (tsNumOfCores <= 1) { + tsNumOfCores = 2; } bool enableCore = cfgGetItem(pCfg, "enableCoreFile")->bval; taosSetCoreDump(enableCore); + + // todo + tsVersion = 30000000; } static void taosSetServerCfg(SConfig *pCfg) { @@ -363,15 +363,16 @@ static void taosSetServerCfg(SConfig *pCfg) { int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile, const char *apolloUrl, bool tsc) { SConfig *pCfg = cfgInit(); - if (tsCfg == NULL) return -1; + if (pCfg == NULL) return -1; if (tsc) { taosAddClientLogCfg(pCfg); } else { + taosAddClientLogCfg(pCfg); taosAddServerLogCfg(pCfg); } - if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { + if (taosLoadCfg(pCfg, cfgDir, envFile, apolloUrl) != 0) { uError("failed to load cfg since %s", terrstr()); cfgCleanup(pCfg); return -1; @@ -379,8 +380,11 @@ int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDi if (tsc) { taosSetClientLogCfg(pCfg); + taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32); } else { + taosSetClientLogCfg(pCfg); taosSetServerLogCfg(pCfg); + taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32); } if (taosInitLog(logname, logFileNum) != 0) { @@ -396,12 +400,15 @@ int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDi int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloUrl, bool tsc) { if (tsCfg != NULL) return 0; tsCfg = cfgInit(); - if (tsCfg == NULL) return -1; if (tsc) { - taosAddServerCfg(tsCfg); - } else { + taosAddClientLogCfg(tsCfg); taosAddClientCfg(tsCfg); + } else { + taosAddClientLogCfg(tsCfg); + taosAddServerLogCfg(tsCfg); + taosAddClientCfg(tsCfg); + taosAddServerCfg(tsCfg); } if (taosLoadCfg(tsCfg, cfgDir, envFile, apolloUrl) != 0) { @@ -414,6 +421,7 @@ int32_t taosInitCfg(const char *cfgDir, const char *envFile, const char *apolloU if (tsc) { taosSetClientCfg(tsCfg); } else { + taosSetClientCfg(tsCfg); taosSetServerCfg(tsCfg); } @@ -436,6 +444,6 @@ void taosCfgDynamicOptions(const char *option, const char *value) { if (strcasecmp(option, "resetlog") == 0) { taosResetLog(); - // taosPrintCfg(); + cfgDumpCfg(tsCfg, 1, false); } } \ No newline at end of file diff --git a/source/dnode/mgmt/daemon/inc/dmnInt.h b/source/dnode/mgmt/daemon/inc/dmnInt.h index fc1c3b4f2c..82e95782cb 100644 --- a/source/dnode/mgmt/daemon/inc/dmnInt.h +++ b/source/dnode/mgmt/daemon/inc/dmnInt.h @@ -28,7 +28,6 @@ extern "C" { #endif -SDnodeEnvCfg dmnGetEnvCfg(); SDnodeObjCfg dmnGetObjCfg(); void dmnDumpCfg(); diff --git a/source/dnode/mgmt/daemon/src/dmnCfg.c b/source/dnode/mgmt/daemon/src/dmnCfg.c index 9f8a44ab89..1e7d1d11ea 100644 --- a/source/dnode/mgmt/daemon/src/dmnCfg.c +++ b/source/dnode/mgmt/daemon/src/dmnCfg.c @@ -17,18 +17,6 @@ #include "dmnInt.h" #include "tconfig.h" -SDnodeEnvCfg dmnGetEnvCfg() { - SConfig *pCfg = taosGetCfg(); - SDnodeEnvCfg envCfg = {0}; - - const char *vstr = cfgGetItem(pCfg, "version")->str; - envCfg.sver = 30000000; - envCfg.numOfCores = cfgGetItem(pCfg, "numOfCores")->i32; - envCfg.numOfCommitThreads = (uint16_t)cfgGetItem(pCfg, "numOfCommitThreads")->i32; - envCfg.enableTelem = cfgGetItem(pCfg, "telemetryReporting")->bval; - return envCfg; -} - SDnodeObjCfg dmnGetObjCfg() { SConfig *pCfg = taosGetCfg(); SDnodeObjCfg objCfg = {0}; diff --git a/source/dnode/mgmt/daemon/src/dmnMain.c b/source/dnode/mgmt/daemon/src/dmnMain.c index 94b480c23d..1a3588bb81 100644 --- a/source/dnode/mgmt/daemon/src/dmnMain.c +++ b/source/dnode/mgmt/daemon/src/dmnMain.c @@ -73,14 +73,13 @@ static int32_t dmnParseOption(int32_t argc, char const *argv[]) { } int32_t dmnRunDnode() { - SDnodeEnvCfg envCfg = dmnGetEnvCfg(); - if (dndInit(&envCfg) != 0) { + if (dndInit() != 0) { uInfo("Failed to start TDengine, please check the log"); return -1; } SDnodeObjCfg objCfg = dmnGetObjCfg(); - SDnode *pDnode = dndCreate(&objCfg); + SDnode *pDnode = dndCreate(&objCfg); if (pDnode == NULL) { uInfo("Failed to start TDengine, please check the log"); return -1; @@ -93,6 +92,7 @@ int32_t dmnRunDnode() { dndClose(pDnode); dndCleanup(); taosCloseLog(); + taosCleanupCfg(); return 0; } @@ -113,12 +113,12 @@ int main(int argc, char const *argv[]) { return 0; } - if (taosCreateLog("taosdlog", 1, configDir, dmn.envFile, dmn.apolloUrl, 1) != 0) { + if (taosCreateLog("taosdlog", 1, configDir, dmn.envFile, dmn.apolloUrl, 0) != 0) { uInfo("Failed to start TDengine since read config error"); return -1; } - if (taosInitCfg(configDir, dmn.envFile, dmn.apolloUrl, 1) != 0) { + if (taosInitCfg(configDir, dmn.envFile, dmn.apolloUrl, 0) != 0) { uInfo("Failed to start TDengine since read config error"); return -1; } @@ -129,7 +129,5 @@ int main(int argc, char const *argv[]) { return 0; } - int32_t code = dmnRunDnode(); - taosCleanupCfg(); - return code; + return dmnRunDnode(); } diff --git a/source/dnode/mgmt/impl/inc/dndEnv.h b/source/dnode/mgmt/impl/inc/dndEnv.h index 9eff246323..7465dc14f7 100644 --- a/source/dnode/mgmt/impl/inc/dndEnv.h +++ b/source/dnode/mgmt/impl/inc/dndEnv.h @@ -124,7 +124,6 @@ typedef struct { typedef struct SDnode { EStat stat; SDnodeObjCfg cfg; - SDnodeEnvCfg env; SDnodeDir dir; FileFd lockFd; SDnodeMgmt dmgmt; @@ -138,11 +137,6 @@ typedef struct SDnode { SStartupReq startup; } SDnode; -typedef struct { - int8_t once; - SDnodeEnvCfg cfg; -} SDnodeEnv; - #ifdef __cplusplus } #endif diff --git a/source/dnode/mgmt/impl/src/dndBnode.c b/source/dnode/mgmt/impl/src/dndBnode.c index e37a164660..610579f6f5 100644 --- a/source/dnode/mgmt/impl/src/dndBnode.c +++ b/source/dnode/mgmt/impl/src/dndBnode.c @@ -179,7 +179,7 @@ static void dndBuildBnodeOption(SDnode *pDnode, SBnodeOpt *pOption) { pOption->sendRedirectRspFp = dndSendRedirectRsp; pOption->dnodeId = dndGetDnodeId(pDnode); pOption->clusterId = dndGetClusterId(pDnode); - pOption->sver = pDnode->env.sver; + pOption->sver = tsVersion; } static int32_t dndOpenBnode(SDnode *pDnode) { diff --git a/source/dnode/mgmt/impl/src/dndEnv.c b/source/dnode/mgmt/impl/src/dndEnv.c index 510ffbfdbf..5bc3b756ea 100644 --- a/source/dnode/mgmt/impl/src/dndEnv.c +++ b/source/dnode/mgmt/impl/src/dndEnv.c @@ -25,7 +25,7 @@ #include "tfs.h" #include "wal.h" -static SDnodeEnv dndEnv = {0}; +static int8_t once = DND_ENV_INIT; EStat dndGetStat(SDnode *pDnode) { return pDnode->stat; } @@ -137,7 +137,6 @@ static int32_t dndCreateImp(SDnode *pDnode, SDnodeObjCfg *pCfg) { } memcpy(&pDnode->cfg, pCfg, sizeof(SDnodeObjCfg)); - memcpy(&pDnode->env, &dndEnv.cfg, sizeof(SDnodeEnvCfg)); return 0; } @@ -259,8 +258,8 @@ void dndClose(SDnode *pDnode) { dInfo("dnode object is closed, data:%p", pDnode); } -int32_t dndInit(const SDnodeEnvCfg *pCfg) { - if (atomic_val_compare_exchange_8(&dndEnv.once, DND_ENV_INIT, DND_ENV_READY) != DND_ENV_INIT) { +int32_t dndInit() { + if (atomic_val_compare_exchange_8(&once, DND_ENV_INIT, DND_ENV_READY) != DND_ENV_INIT) { terrno = TSDB_CODE_REPEAT_INIT; dError("failed to init dnode env since %s", terrstr()); return -1; @@ -283,8 +282,8 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) { } SVnodeOpt vnodeOpt = { - .sver = pCfg->sver, - .nthreads = pCfg->numOfCommitThreads, + .sver = tsVersion, + .nthreads = tsNumOfCommitThreads, .putReqToVQueryQFp = dndPutReqToVQueryQ, .sendReqToDnodeFp = dndSendReqToDnode }; @@ -295,13 +294,12 @@ int32_t dndInit(const SDnodeEnvCfg *pCfg) { return -1; } - memcpy(&dndEnv.cfg, pCfg, sizeof(SDnodeEnvCfg)); dInfo("dnode env is initialized"); return 0; } void dndCleanup() { - if (atomic_val_compare_exchange_8(&dndEnv.once, DND_ENV_READY, DND_ENV_CLEANUP) != DND_ENV_READY) { + if (atomic_val_compare_exchange_8(&once, DND_ENV_READY, DND_ENV_CLEANUP) != DND_ENV_READY) { dError("dnode env is already cleaned up"); return; } diff --git a/source/dnode/mgmt/impl/src/dndMgmt.c b/source/dnode/mgmt/impl/src/dndMgmt.c index 421a6e659f..4827065e87 100644 --- a/source/dnode/mgmt/impl/src/dndMgmt.c +++ b/source/dnode/mgmt/impl/src/dndMgmt.c @@ -357,13 +357,13 @@ void dndSendStatusReq(SDnode *pDnode) { SDnodeMgmt *pMgmt = &pDnode->dmgmt; taosRLockLatch(&pMgmt->latch); - req.sver = pDnode->env.sver; + req.sver = tsVersion; req.dver = pMgmt->dver; req.dnodeId = pMgmt->dnodeId; req.clusterId = pMgmt->clusterId; req.rebootTime = pMgmt->rebootTime; req.updateTime = pMgmt->updateTime; - req.numOfCores = pDnode->env.numOfCores; + req.numOfCores = tsNumOfCores; req.numOfSupportVnodes = pDnode->cfg.numOfSupportVnodes; memcpy(req.dnodeEp, pDnode->cfg.localEp, TSDB_EP_LEN); diff --git a/source/dnode/mgmt/impl/src/dndMnode.c b/source/dnode/mgmt/impl/src/dndMnode.c index ba165537ef..5ebb3d6663 100644 --- a/source/dnode/mgmt/impl/src/dndMnode.c +++ b/source/dnode/mgmt/impl/src/dndMnode.c @@ -273,8 +273,8 @@ static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) { pOption->putReqToMReadQFp = dndPutMsgToMReadQ; pOption->dnodeId = dndGetDnodeId(pDnode); pOption->clusterId = dndGetClusterId(pDnode); - pOption->cfg.sver = pDnode->env.sver; - pOption->cfg.enableTelem = pDnode->env.enableTelem; + pOption->cfg.sver = tsVersion; + pOption->cfg.enableTelem = tsEnableTelemetryReporting; } static void dndBuildMnodeDeployOption(SDnode *pDnode, SMnodeOpt *pOption) { diff --git a/source/dnode/mgmt/impl/src/dndQnode.c b/source/dnode/mgmt/impl/src/dndQnode.c index 64545ec09f..e5600fcaf0 100644 --- a/source/dnode/mgmt/impl/src/dndQnode.c +++ b/source/dnode/mgmt/impl/src/dndQnode.c @@ -185,7 +185,7 @@ static void dndBuildQnodeOption(SDnode *pDnode, SQnodeOpt *pOption) { pOption->sendRedirectRspFp = dndSendRedirectRsp; pOption->dnodeId = dndGetDnodeId(pDnode); pOption->clusterId = dndGetClusterId(pDnode); - pOption->sver = pDnode->env.sver; + pOption->sver = tsVersion; } static int32_t dndOpenQnode(SDnode *pDnode) { diff --git a/source/dnode/mgmt/impl/src/dndSnode.c b/source/dnode/mgmt/impl/src/dndSnode.c index 77686a6027..fb108559b1 100644 --- a/source/dnode/mgmt/impl/src/dndSnode.c +++ b/source/dnode/mgmt/impl/src/dndSnode.c @@ -179,7 +179,7 @@ static void dndBuildSnodeOption(SDnode *pDnode, SSnodeOpt *pOption) { pOption->sendRedirectRspFp = dndSendRedirectRsp; pOption->dnodeId = dndGetDnodeId(pDnode); pOption->clusterId = dndGetClusterId(pDnode); - pOption->sver = pDnode->env.sver; + pOption->sver = tsVersion; } static int32_t dndOpenSnode(SDnode *pDnode) { diff --git a/source/dnode/mgmt/impl/src/dndTransport.c b/source/dnode/mgmt/impl/src/dndTransport.c index 7afd14e5ea..8c64cc16c3 100644 --- a/source/dnode/mgmt/impl/src/dndTransport.c +++ b/source/dnode/mgmt/impl/src/dndTransport.c @@ -344,7 +344,7 @@ static int32_t dndInitServer(SDnode *pDnode) { STransMgmt *pMgmt = &pDnode->tmgmt; dndInitMsgFp(pMgmt); - int32_t numOfThreads = (int32_t)((pDnode->env.numOfCores * tsNumOfThreadsPerCore) / 2.0); + int32_t numOfThreads = (int32_t)((tsNumOfCores * tsNumOfThreadsPerCore) / 2.0); if (numOfThreads < 1) { numOfThreads = 1; } diff --git a/source/dnode/mgmt/impl/src/dndVnodes.c b/source/dnode/mgmt/impl/src/dndVnodes.c index f29e89485e..a0c0a02431 100644 --- a/source/dnode/mgmt/impl/src/dndVnodes.c +++ b/source/dnode/mgmt/impl/src/dndVnodes.c @@ -421,7 +421,7 @@ static int32_t dndOpenVnodes(SDnode *pDnode) { pMgmt->totalVnodes = numOfVnodes; - int32_t threadNum = pDnode->env.numOfCores; + int32_t threadNum = tsNumOfCores; #if 1 threadNum = 1; #endif @@ -874,11 +874,11 @@ static int32_t dndInitVnodeWorkers(SDnode *pDnode) { SVnodesMgmt *pMgmt = &pDnode->vmgmt; int32_t maxFetchThreads = 4; - int32_t minFetchThreads = TMIN(maxFetchThreads, pDnode->env.numOfCores); - int32_t minQueryThreads = TMAX((int32_t)(pDnode->env.numOfCores * tsRatioOfQueryCores), 1); + int32_t minFetchThreads = TMIN(maxFetchThreads, tsNumOfCores); + int32_t minQueryThreads = TMAX((int32_t)(tsNumOfCores * tsRatioOfQueryCores), 1); int32_t maxQueryThreads = minQueryThreads; - int32_t maxWriteThreads = TMAX(pDnode->env.numOfCores, 1); - int32_t maxSyncThreads = TMAX(pDnode->env.numOfCores / 2, 1); + int32_t maxWriteThreads = TMAX(tsNumOfCores, 1); + int32_t maxSyncThreads = TMAX(tsNumOfCores / 2, 1); SQWorkerPool *pQPool = &pMgmt->queryPool; pQPool->name = "vnode-query"; From 6aab93803c559af046518442d58bee38d57b7e8e Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 20:17:48 +0800 Subject: [PATCH 09/10] remove mnode cfg --- include/dnode/mnode/mnode.h | 9 ---- include/os/osEnv.h | 1 + source/common/src/tglobal.c | 53 ++++++++++++++++++++---- source/dnode/mgmt/impl/src/dndMnode.c | 2 - source/dnode/mnode/impl/inc/mndInt.h | 2 +- source/dnode/mnode/impl/src/mndDnode.c | 13 +++--- source/dnode/mnode/impl/src/mndProfile.c | 6 +-- source/dnode/mnode/impl/src/mndShow.c | 2 +- source/dnode/mnode/impl/src/mndTelem.c | 2 +- source/dnode/mnode/impl/src/mnode.c | 7 +--- source/os/src/osEnv.c | 2 + source/os/src/osLocale.c | 7 +--- source/os/src/osSysinfo.c | 2 +- source/util/src/tconfig.c | 2 +- 14 files changed, 63 insertions(+), 47 deletions(-) diff --git a/include/dnode/mnode/mnode.h b/include/dnode/mnode/mnode.h index a876827239..2680bb83ed 100644 --- a/include/dnode/mnode/mnode.h +++ b/include/dnode/mnode/mnode.h @@ -44,21 +44,12 @@ typedef struct SMnodeLoad { int64_t compStorage; } SMnodeLoad; -typedef struct SMnodeCfg { - int32_t sver; - bool enableTelem; - bool printAuth; - int32_t statusInterval; - int32_t shellActivityTimer; -} SMnodeCfg; - typedef struct { int32_t dnodeId; int64_t clusterId; int8_t replica; int8_t selfIndex; SReplica replicas[TSDB_MAX_REPLICA]; - SMnodeCfg cfg; SDnode *pDnode; PutReqToMWriteQFp putReqToMWriteQFp; PutReqToMReadQFp putReqToMReadQFp; diff --git a/include/os/osEnv.h b/include/os/osEnv.h index ce376bb37b..4907fdaa93 100644 --- a/include/os/osEnv.h +++ b/include/os/osEnv.h @@ -47,6 +47,7 @@ void osSetLogReservedSpace(float sizeInGB); void osSetTempReservedSpace(float sizeInGB); void osSetDataReservedSpace(float sizeInGB); void osSetTimezone(const char *timezone); +void osSetLocale(const char *locale, const char *charset); bool osSetEnableCore(bool enable); #ifdef __cplusplus diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 320e319c95..a196b1901e 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -246,9 +246,9 @@ static void taosAddClientCfg(SConfig *pCfg) { cfgAddString(pCfg, "secondEp", defaultSecondEp, 1); cfgAddString(pCfg, "fqdn", defaultFqdn, 1); cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056, 1); - cfgAddDir(pCfg, "tempDir", osTempDir(), 1); cfgAddString(pCfg, "configDir", configDir, 1); cfgAddString(pCfg, "scriptDir", configDir, 1); + cfgAddDir(pCfg, "tempDir", osTempDir(), 1); cfgAddFloat(pCfg, "minimalTempDirGB", 1.0f, 0.001f, 10000000, 1); cfgAddFloat(pCfg, "numOfThreadsPerCore", tsNumOfThreadsPerCore, 0, 10, 1); cfgAddInt32(pCfg, "maxTmrCtrl", tsMaxTmrCtrl, 8, 2048, 1); @@ -262,17 +262,17 @@ static void taosAddClientCfg(SConfig *pCfg) { cfgAddInt32(pCfg, "maxRegexStringLen", tsMaxRegexStringLen, 0, TSDB_MAX_FIELD_LEN, 1); cfgAddInt32(pCfg, "maxNumOfOrderedRes", tsMaxNumOfOrderedResults, 128, TSDB_MAX_ALLOWED_SQL_LEN, 1); cfgAddBool(pCfg, "keepColumnName", tsKeepOriginalColumnName, 1); - cfgAddInt32(pCfg, "numOfCores", 1, 1, 100000, 1); - cfgAddBool(pCfg, "enableCoreFile", 0, 1); cfgAddInt32(pCfg, "maxBinaryDisplayWidth", tsMaxBinaryDisplayWidth, 1, 65536, 1); + cfgAddTimezone(pCfg, "timezone", osTimezone()); + cfgAddLocale(pCfg, "locale", osLocale()); + cfgAddCharset(pCfg, "charset", osCharset()); + cfgAddBool(pCfg, "enableCoreFile", 0, 1); + cfgAddInt32(pCfg, "numOfCores", tsNumOfCores, 1, 100000, 1); cfgAddString(pCfg, "version", version, 1); cfgAddString(pCfg, "compatible_version", compatible_version, 1); cfgAddString(pCfg, "gitinfo", gitinfo, 1); cfgAddString(pCfg, "gitinfoOfInternal", gitinfoOfInternal, 1); cfgAddString(pCfg, "buildinfo", buildinfo, 1); - cfgAddTimezone(pCfg, "timezone", osTimezone()); - cfgAddLocale(pCfg, "locale", osLocale()); - cfgAddCharset(pCfg, "charset", osCharset()); } static void taosAddServerCfg(SConfig *pCfg) { @@ -325,20 +325,37 @@ static void taosSetServerLogCfg(SConfig *pCfg) { } static void taosSetClientCfg(SConfig *pCfg) { - osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); - osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); tstrncpy(tsFirst, cfgGetItem(pCfg, "firstEp")->str, TSDB_EP_LEN); tstrncpy(tsSecond, cfgGetItem(pCfg, "secondEp")->str, TSDB_EP_LEN); tstrncpy(tsLocalFqdn, cfgGetItem(pCfg, "fqdn")->str, TSDB_EP_LEN); tsServerPort = (uint16_t)cfgGetItem(pCfg, "serverPort")->i32; snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); + osSetTempDir(cfgGetItem(pCfg, "tempDir")->str); + osSetDataReservedSpace(cfgGetItem(pCfg, "minimalTempDirGB")->fval); + + tsNumOfThreadsPerCore = cfgGetItem(pCfg, "maxTmrCtrl")->fval; + tsMaxTmrCtrl = cfgGetItem(pCfg, "maxTmrCtrl")->i32; + tsRpcTimer = cfgGetItem(pCfg, "rpcTimer")->i32; + tsRpcMaxTime = cfgGetItem(pCfg, "rpcMaxTime")->i32; + tsRpcForceTcp = cfgGetItem(pCfg, "rpcForceTcp")->i32; + tsShellActivityTimer = cfgGetItem(pCfg, "shellActivityTimer")->bval; + tsCompressMsgSize = cfgGetItem(pCfg, "compressMsgSize")->i32; + tsCompressColData = cfgGetItem(pCfg, "compressColData")->i32; + tsMaxWildCardsLen = cfgGetItem(pCfg, "maxWildCardsLength")->i32; + tsMaxRegexStringLen = cfgGetItem(pCfg, "maxRegexStringLen")->i32; + tsMaxNumOfOrderedResults = cfgGetItem(pCfg, "maxNumOfOrderedRes")->i32; + tsKeepOriginalColumnName = cfgGetItem(pCfg, "keepColumnName")->bval; + tsMaxBinaryDisplayWidth = cfgGetItem(pCfg, "maxBinaryDisplayWidth")->i32; SConfigItem *pItem = cfgGetItem(pCfg, "timezone"); osSetTimezone(pItem->str); uDebug("timezone format changed from %s to %s", pItem->str, osTimezone()); cfgSetItem(pCfg, "timezone", osTimezone(), pItem->stype); - taosGetSystemInfo(); + const char *locale = cfgGetItem(pCfg, "locale")->str; + const char *charset = cfgGetItem(pCfg, "charset")->str; + osSetLocale(locale, charset); + if (tsNumOfCores <= 1) { tsNumOfCores = 2; } @@ -354,7 +371,25 @@ static void taosSetServerCfg(SConfig *pCfg) { osSetDataDir(cfgGetItem(pCfg, "dataDir")->str); osSetTempReservedSpace(cfgGetItem(pCfg, "minimalDataDirGB")->fval); + tsNumOfCommitThreads = cfgGetItem(pCfg, "numOfCommitThreads")->i32; + tsRatioOfQueryCores = cfgGetItem(pCfg, "ratioOfQueryCores")->fval; + tsMaxNumOfDistinctResults = cfgGetItem(pCfg, "maxNumOfDistinctRes")->i32; + tsEnableTelemetryReporting = cfgGetItem(pCfg, "telemetryReporting")->bval; + tsMaxConnections = cfgGetItem(pCfg, "maxConnections")->i32; + tsMaxShellConns = cfgGetItem(pCfg, "maxShellConns")->i32; + tsStatusInterval = cfgGetItem(pCfg, "statusInterval")->i32; + tsMinSlidingTime = cfgGetItem(pCfg, "minSlidingTime")->i32; + tsMinIntervalTime = cfgGetItem(pCfg, "minIntervalTime")->i32; + tsMaxStreamComputDelay = cfgGetItem(pCfg, "maxStreamCompDelay")->i32; + tsStreamCompStartDelay = cfgGetItem(pCfg, "maxFirstStreamCompDelay")->i32; + tsRetryStreamCompDelay = cfgGetItem(pCfg, "retryStreamCompDelay")->i32; + tsStreamComputDelayRatio = cfgGetItem(pCfg, "streamCompDelayRatio")->fval; tsQueryBufferSize = cfgGetItem(pCfg, "queryBufferSize")->i32; + tsRetrieveBlockingModel = cfgGetItem(pCfg, "retrieveBlockingModel")->bval; + tsPrintAuth = cfgGetItem(pCfg, "printAuth")->bval; + tsEnableSlaveQuery = cfgGetItem(pCfg, "slaveQuery")->bval; + tsDeadLockKillQuery = cfgGetItem(pCfg, "deadLockKillQuery")->bval; + if (tsQueryBufferSize >= 0) { tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; } diff --git a/source/dnode/mgmt/impl/src/dndMnode.c b/source/dnode/mgmt/impl/src/dndMnode.c index 5ebb3d6663..b69516b1b7 100644 --- a/source/dnode/mgmt/impl/src/dndMnode.c +++ b/source/dnode/mgmt/impl/src/dndMnode.c @@ -273,8 +273,6 @@ static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) { pOption->putReqToMReadQFp = dndPutMsgToMReadQ; pOption->dnodeId = dndGetDnodeId(pDnode); pOption->clusterId = dndGetClusterId(pDnode); - pOption->cfg.sver = tsVersion; - pOption->cfg.enableTelem = tsEnableTelemetryReporting; } static void dndBuildMnodeDeployOption(SDnode *pDnode, SMnodeOpt *pOption) { diff --git a/source/dnode/mnode/impl/inc/mndInt.h b/source/dnode/mnode/impl/inc/mndInt.h index 74ae159d9d..e65535206d 100644 --- a/source/dnode/mnode/impl/inc/mndInt.h +++ b/source/dnode/mnode/impl/inc/mndInt.h @@ -25,6 +25,7 @@ #include "ttime.h" #include "wal.h" #include "version.h" +#include "tglobal.h" #ifdef __cplusplus extern "C" { @@ -81,7 +82,6 @@ typedef struct SMnode { tmr_h mqTimer; tmr_h telemTimer; char *path; - SMnodeCfg cfg; int64_t checkTime; SSdb *pSdb; SDnode *pDnode; diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index b520acf2d2..a4c9334cbd 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -237,7 +237,7 @@ int32_t mndGetDnodeSize(SMnode *pMnode) { bool mndIsDnodeOnline(SMnode *pMnode, SDnodeObj *pDnode, int64_t curMs) { int64_t interval = TABS(pDnode->lastAccessTime - curMs); - if (interval > 3500 * pMnode->cfg.statusInterval) { + if (interval > 3500 * tsStatusInterval) { if (pDnode->rebootTime > 0) { pDnode->offlineReason = DND_REASON_STATUS_MSG_TIMEOUT; } @@ -272,8 +272,8 @@ static void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { } static int32_t mndCheckClusterCfgPara(SMnode *pMnode, const SClusterCfg *pCfg) { - if (pCfg->statusInterval != pMnode->cfg.statusInterval) { - mError("statusInterval [%d - %d] cfg inconsistent", pCfg->statusInterval, pMnode->cfg.statusInterval); + if (pCfg->statusInterval != tsStatusInterval) { + mError("statusInterval [%d - %d] cfg inconsistent", pCfg->statusInterval, tsStatusInterval); return DND_REASON_STATUS_INTERVAL_NOT_MATCH; } @@ -355,12 +355,11 @@ static int32_t mndProcessStatusReq(SMnodeMsg *pReq) { bool needCheck = !online || dnodeChanged || reboot; if (needCheck) { - if (statusReq.sver != pMnode->cfg.sver) { + if (statusReq.sver != tsVersion) { if (pDnode != NULL) { pDnode->offlineReason = DND_REASON_VERSION_NOT_MATCH; } - mError("dnode:%d, status msg version:%d not match cluster:%d", statusReq.dnodeId, statusReq.sver, - pMnode->cfg.sver); + mError("dnode:%d, status msg version:%d not match cluster:%d", statusReq.dnodeId, statusReq.sver, tsVersion); terrno = TSDB_CODE_MND_INVALID_MSG_VERSION; goto PROCESS_STATUS_MSG_OVER; } @@ -666,7 +665,7 @@ static int32_t mndRetrieveConfigs(SMnodeMsg *pReq, SShowObj *pShow, char *data, int32_t cols = 0; cfgOpts[numOfRows] = "statusInterval"; - snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%d", pMnode->cfg.statusInterval); + snprintf(cfgVals[numOfRows], TSDB_CONIIG_VALUE_LEN, "%d", tsStatusInterval); numOfRows++; cfgOpts[numOfRows] = "timezone"; diff --git a/source/dnode/mnode/impl/src/mndProfile.c b/source/dnode/mnode/impl/src/mndProfile.c index 2dfdc8dc7f..e313c4d676 100644 --- a/source/dnode/mnode/impl/src/mndProfile.c +++ b/source/dnode/mnode/impl/src/mndProfile.c @@ -63,7 +63,7 @@ static void mndCancelGetNextQuery(SMnode *pMnode, void *pIter); int32_t mndInitProfile(SMnode *pMnode) { SProfileMgmt *pMgmt = &pMnode->profileMgmt; - int32_t connCheckTime = pMnode->cfg.shellActivityTimer * 2; + int32_t connCheckTime = tsShellActivityTimer * 2; pMgmt->cache = taosCacheInit(TSDB_DATA_TYPE_INT, connCheckTime, true, (__cache_free_fn_t)mndFreeConn, "conn"); if (pMgmt->cache == NULL) { terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -117,7 +117,7 @@ static SConnObj *mndCreateConn(SMnode *pMnode, SRpcConnInfo *pInfo, int32_t pid, tstrncpy(connObj.user, pInfo->user, TSDB_USER_LEN); tstrncpy(connObj.app, app, TSDB_APP_NAME_LEN); - int32_t keepTime = pMnode->cfg.shellActivityTimer * 3; + int32_t keepTime = tsShellActivityTimer * 3; SConnObj *pConn = taosCachePut(pMgmt->cache, &connId, sizeof(int32_t), &connObj, sizeof(connObj), keepTime * 1000); if (pConn == NULL) { terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -143,7 +143,7 @@ static SConnObj *mndAcquireConn(SMnode *pMnode, int32_t connId) { return NULL; } - int32_t keepTime = pMnode->cfg.shellActivityTimer * 3; + int32_t keepTime = tsShellActivityTimer * 3; pConn->lastAccessTimeMs = keepTime * 1000 + (uint64_t)taosGetTimestampMs(); mTrace("conn:%d, acquired from cache, data:%p", pConn->id, pConn); diff --git a/source/dnode/mnode/impl/src/mndShow.c b/source/dnode/mnode/impl/src/mndShow.c index afb338e97d..8fd0c282e1 100644 --- a/source/dnode/mnode/impl/src/mndShow.c +++ b/source/dnode/mnode/impl/src/mndShow.c @@ -64,7 +64,7 @@ static SShowObj *mndCreateShowObj(SMnode *pMnode, SShowReq *pReq) { memcpy(showObj.db, pReq->db, TSDB_DB_FNAME_LEN); memcpy(showObj.payload, pReq->payload, pReq->payloadLen); - int32_t keepTime = pMnode->cfg.shellActivityTimer * 6 * 1000; + int32_t keepTime = tsShellActivityTimer * 6 * 1000; SShowObj *pShow = taosCachePut(pMgmt->cache, &showId, sizeof(int64_t), &showObj, size, keepTime); if (pShow == NULL) { terrno = TSDB_CODE_OUT_OF_MEMORY; diff --git a/source/dnode/mnode/impl/src/mndTelem.c b/source/dnode/mnode/impl/src/mndTelem.c index ced1be687d..2f7d5e10b6 100644 --- a/source/dnode/mnode/impl/src/mndTelem.c +++ b/source/dnode/mnode/impl/src/mndTelem.c @@ -266,7 +266,7 @@ static void mndGetEmail(SMnode* pMnode, char* filepath) { int32_t mndInitTelem(SMnode* pMnode) { STelemMgmt* pMgmt = &pMnode->telemMgmt; - pMgmt->enable = pMnode->cfg.enableTelem; + pMgmt->enable = tsEnableTelemetryReporting; taosInitRWLatch(&pMgmt->lock); mndGetEmail(pMnode, "/usr/local/taos/email"); diff --git a/source/dnode/mnode/impl/src/mnode.c b/source/dnode/mnode/impl/src/mnode.c index f5acc897e7..5ade5685b8 100644 --- a/source/dnode/mnode/impl/src/mnode.c +++ b/source/dnode/mnode/impl/src/mnode.c @@ -290,14 +290,9 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) { pMnode->sendReqToDnodeFp = pOption->sendReqToDnodeFp; pMnode->sendReqToMnodeFp = pOption->sendReqToMnodeFp; pMnode->sendRedirectRspFp = pOption->sendRedirectRspFp; - pMnode->cfg.sver = pOption->cfg.sver; - pMnode->cfg.enableTelem = pOption->cfg.enableTelem; - pMnode->cfg.statusInterval = pOption->cfg.statusInterval; - pMnode->cfg.shellActivityTimer = pOption->cfg.shellActivityTimer; if (pMnode->sendReqToDnodeFp == NULL || pMnode->sendReqToMnodeFp == NULL || pMnode->sendRedirectRspFp == NULL || - pMnode->putReqToMWriteQFp == NULL || pMnode->dnodeId < 0 || pMnode->clusterId < 0 || - pMnode->cfg.statusInterval < 1) { + pMnode->putReqToMWriteQFp == NULL || pMnode->dnodeId < 0 || pMnode->clusterId < 0) { terrno = TSDB_CODE_MND_INVALID_OPTIONS; return -1; } diff --git a/source/os/src/osEnv.c b/source/os/src/osEnv.c index dc7662a406..9a5b251b59 100644 --- a/source/os/src/osEnv.c +++ b/source/os/src/osEnv.c @@ -74,10 +74,12 @@ void osSetLogReservedSpace(float sizeInGB) { env.logSpace.reserved = sizeInGB; } void osSetTempReservedSpace(float sizeInGB) { env.tempSpace.reserved = sizeInGB; } void osSetDataReservedSpace(float sizeInGB) { env.dataSpace.reserved = sizeInGB; } void osSetTimezone(const char *timezone) { taosSetSystemTimezone(timezone, env.timezone, &env.daylight); } +void osSetLocale(const char *locale, const char *charset) { taosSetSystemLocale(locale, charset); } bool osSetEnableCore(bool enable) { env.enableCoreFile = enable; } void osInit() { srand(taosSafeRand()); + taosGetSystemInfo(); #if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) taosWinSocketInit(); diff --git a/source/os/src/osLocale.c b/source/os/src/osLocale.c index e006a337a0..e5368f945f 100644 --- a/source/os/src/osLocale.c +++ b/source/os/src/osLocale.c @@ -75,15 +75,10 @@ void taosSetSystemLocale(const char *inLocale, const char *inCharSet) { char *locale = setlocale(LC_CTYPE, inLocale); // default locale or user specified locale is not valid, abort launch - if (inLocale == NULL) { + if (inLocale == NULL || strlen(inCharSet) == 0) { printf("Invalid locale:%s, please set the valid locale in config file\n", inLocale); } - if (strlen(inCharSet) == 0) { - printf("failed to get charset, please set the valid charset in config file\n"); - exit(-1); - } - if (!taosValidateEncodec(inCharSet)) { printf("Invalid charset:%s, please set the valid charset in config file", inCharSet); exit(-1); diff --git a/source/os/src/osSysinfo.c b/source/os/src/osSysinfo.c index 4a8cc5ecbc..5bbd7e59a5 100644 --- a/source/os/src/osSysinfo.c +++ b/source/os/src/osSysinfo.c @@ -20,7 +20,7 @@ int32_t tsTotalMemoryMB = 0; int64_t tsPageSize = 0; int64_t tsOpenMax = 0; int64_t tsStreamMax = 0; -int32_t tsNumOfCores = 1; +int32_t tsNumOfCores = 2; #if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) /* diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 839ced7f50..0f4ba419f3 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -20,7 +20,7 @@ #include "tutil.h" #include "ulog.h" -#define CFG_NAME_PRINT_LEN 22 +#define CFG_NAME_PRINT_LEN 24 #define CFG_SRC_PRINT_LEN 12 typedef struct SConfig { From 1383e53d4f705dfac5690e74428adb2fab10dd7f Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 24 Feb 2022 20:47:15 +0800 Subject: [PATCH 10/10] tsim cfg --- source/common/src/tglobal.c | 11 +++++++---- source/dnode/mgmt/daemon/src/dmnMain.c | 2 -- source/os/src/osEnv.c | 12 +++++++++--- source/os/src/osLocale.c | 4 ++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index a196b1901e..425e1c8d6e 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -217,6 +217,10 @@ static void taosAddClientLogCfg(SConfig *pCfg) { cfgAddInt32(pCfg, "rpcDebugFlag", rpcDebugFlag, 0, 255, 1); cfgAddInt32(pCfg, "tmrDebugFlag", tmrDebugFlag, 0, 255, 1); cfgAddInt32(pCfg, "jniDebugFlag", jniDebugFlag, 0, 255, 1); + cfgAddInt32(pCfg, "simDebugFlag", 143, 0, 255, 1); + cfgAddDir(pCfg, "configDir", configDir, 1); + cfgAddDir(pCfg, "scriptDir", configDir, 1); + cfgAddInt32(pCfg, "debugFlag", 0, 0, 255, 1); } static void taosAddServerLogCfg(SConfig *pCfg) { @@ -229,8 +233,6 @@ static void taosAddServerLogCfg(SConfig *pCfg) { cfgAddInt32(pCfg, "tsdbDebugFlag", tsdbDebugFlag, 0, 255, 0); cfgAddInt32(pCfg, "tqDebugFlag", tqDebugFlag, 0, 255, 0); cfgAddInt32(pCfg, "fsDebugFlag", fsDebugFlag, 0, 255, 0); - cfgAddInt32(pCfg, "simDebugFlag", 143, 0, 255, 1); - cfgAddInt32(pCfg, "debugFlag", 0, 0, 255, 1); } static void taosAddClientCfg(SConfig *pCfg) { @@ -246,8 +248,6 @@ static void taosAddClientCfg(SConfig *pCfg) { cfgAddString(pCfg, "secondEp", defaultSecondEp, 1); cfgAddString(pCfg, "fqdn", defaultFqdn, 1); cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056, 1); - cfgAddString(pCfg, "configDir", configDir, 1); - cfgAddString(pCfg, "scriptDir", configDir, 1); cfgAddDir(pCfg, "tempDir", osTempDir(), 1); cfgAddFloat(pCfg, "minimalTempDirGB", 1.0f, 0.001f, 10000000, 1); cfgAddFloat(pCfg, "numOfThreadsPerCore", tsNumOfThreadsPerCore, 0, 10, 1); @@ -300,6 +300,7 @@ static void taosAddServerCfg(SConfig *pCfg) { } static void taosSetClientLogCfg(SConfig *pCfg) { + SConfigItem *pItem = cfgGetItem(pCfg, "logDir"); osSetLogDir(cfgGetItem(pCfg, "logDir")->str); osSetDataReservedSpace(cfgGetItem(pCfg, "minimalLogDirGB")->fval); tsNumOfLogLines = cfgGetItem(pCfg, "numOfLogLines")->i32; @@ -397,6 +398,8 @@ static void taosSetServerCfg(SConfig *pCfg) { int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char *envFile, const char *apolloUrl, bool tsc) { + osInit(); + SConfig *pCfg = cfgInit(); if (pCfg == NULL) return -1; diff --git a/source/dnode/mgmt/daemon/src/dmnMain.c b/source/dnode/mgmt/daemon/src/dmnMain.c index 1a3588bb81..9ce09c0a5d 100644 --- a/source/dnode/mgmt/daemon/src/dmnMain.c +++ b/source/dnode/mgmt/daemon/src/dmnMain.c @@ -97,8 +97,6 @@ int32_t dmnRunDnode() { } int main(int argc, char const *argv[]) { - osInit(); - if (dmnParseOption(argc, argv) != 0) { return -1; } diff --git a/source/os/src/osEnv.c b/source/os/src/osEnv.c index 9a5b251b59..173db8405b 100644 --- a/source/os/src/osEnv.c +++ b/source/os/src/osEnv.c @@ -92,21 +92,27 @@ void osInit() { strcpy(env.tempDir, tmpDir); } - strcpy(configDir, "C:\\TDengine\\cfg"); + if (configDir[0] == 0) { + strcpy(configDir, "C:\\TDengine\\cfg"); + } strcpy(env.dataDir, "C:\\TDengine\\data"); strcpy(env.logDir, "C:\\TDengine\\log"); strcpy(env.tempDir, "C:\\Windows\\Temp"); strcpy(env.osName, "Windows"); #elif defined(_TD_DARWIN_64) - strcpy(configDir, "/tmp/taosd"); + if (configDir[0] == 0) { + strcpy(configDir, "/tmp/taosd"); + } strcpy(env.dataDir, "/usr/local/var/lib/taos"); strcpy(env.logDir, "/usr/local/var/log/taos"); strcpy(env.tempDir, "/usr/local/etc/taos"); strcpy(env.osName, "Darwin"); #else - strcpy(configDir, "/etc/taos"); + if (configDir[0] == 0) { + strcpy(configDir, "/etc/taos"); + } strcpy(env.dataDir, "/var/lib/taos"); strcpy(env.logDir, "/var/log/taos"); strcpy(env.tempDir, "/tmp"); diff --git a/source/os/src/osLocale.c b/source/os/src/osLocale.c index e5368f945f..47546f7deb 100644 --- a/source/os/src/osLocale.c +++ b/source/os/src/osLocale.c @@ -75,8 +75,8 @@ void taosSetSystemLocale(const char *inLocale, const char *inCharSet) { char *locale = setlocale(LC_CTYPE, inLocale); // default locale or user specified locale is not valid, abort launch - if (inLocale == NULL || strlen(inCharSet) == 0) { - printf("Invalid locale:%s, please set the valid locale in config file\n", inLocale); + if (inLocale == NULL || strlen(inLocale) == 0) { + //printf("Invalid locale:%s, please set the valid locale in config file\n", inLocale); } if (!taosValidateEncodec(inCharSet)) {