From bc65c92ee3d1260a696e9bdac9a31b4f5b0fffcb Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 22 Apr 2022 15:50:29 +0800 Subject: [PATCH] refactor(tools): adjust client config parameters --- include/common/tglobal.h | 7 --- source/common/src/tglobal.c | 31 +---------- source/dnode/mgmt/exe/dmMain.c | 2 +- source/libs/sync/src/syncIO.c | 1 - source/util/src/tconfig.c | 6 ++- source/util/src/ttimer.c | 2 +- tools/shell/src/shellArguments.c | 93 +++++++++++++++++++++++++++----- tools/shell/src/shellMain.c | 3 +- tools/shell/src/shellUtil.c | 11 +++- 9 files changed, 96 insertions(+), 60 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 88ce0cd970..5cd045e814 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -34,13 +34,9 @@ extern int32_t tsVersion; extern int32_t tsStatusInterval; // common -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 int32_t tsCompressMsgSize; extern int32_t tsCompressColData; extern int32_t tsMaxNumOfDistinctResults; @@ -95,9 +91,6 @@ extern bool tsKeepOriginalColumnName; extern bool tsDeadLockKillQuery; // client -extern int32_t tsMaxWildCardsLen; -extern int32_t tsMaxRegexStringLen; -extern int32_t tsMaxNumOfOrderedResults; extern int32_t tsMinSlidingTime; extern int32_t tsMinIntervalTime; extern int32_t tsMaxStreamComputDelay; diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index e9babc1298..8c526b2691 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -32,13 +32,9 @@ int32_t tsVersion = 30000000; int32_t tsStatusInterval = 1; // second // common -int32_t tsRpcTimer = 300; -int32_t tsRpcMaxTime = 600; // seconds; -bool tsRpcForceTcp = true; // disable this, means query, show command use udp protocol as default int32_t tsMaxShellConns = 50000; int32_t tsMaxConnections = 50000; int32_t tsShellActivityTimer = 3; // second -int32_t tsMaxBinaryDisplayWidth = 30; bool tsEnableSlaveQuery = true; bool tsPrintAuth = false; @@ -102,14 +98,6 @@ int32_t tsCompressColData = -1; */ int32_t tsCompatibleModel = 1; -// client -int32_t tsMaxWildCardsLen = TSDB_PATTERN_STRING_DEFAULT_LEN; -int32_t tsMaxRegexStringLen = TSDB_REGEX_STRING_DEFAULT_LEN; - -// the maximum number of results for projection query on super table that are returned from -// one virtual node, to order according to timestamp -int32_t tsMaxNumOfOrderedResults = 100000; - // 10 ms for sliding time, the value will changed in case of time precision changed int32_t tsMinSlidingTime = 10; @@ -308,19 +296,10 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { if (cfgAddInt32(pCfg, "serverPort", defaultServerPort, 1, 65056, 1) != 0) return -1; if (cfgAddDir(pCfg, "tempDir", tsTempDir, 1) != 0) return -1; if (cfgAddFloat(pCfg, "minimalTempDirGB", 1.0f, 0.001f, 10000000, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "maxTmrCtrl", tsMaxTmrCtrl, 8, 2048, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcTimer", tsRpcTimer, 100, 3000, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "rpcMaxTime", tsRpcMaxTime, 100, 7200, 1) != 0) return -1; - if (cfgAddBool(pCfg, "rpcForceTcp", tsRpcForceTcp, 1) != 0) return -1; if (cfgAddInt32(pCfg, "shellActivityTimer", tsShellActivityTimer, 1, 120, 1) != 0) return -1; if (cfgAddInt32(pCfg, "compressMsgSize", tsCompressMsgSize, -1, 100000000, 1) != 0) return -1; if (cfgAddInt32(pCfg, "compressColData", tsCompressColData, -1, 100000000, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "maxWildCardsLength", tsMaxWildCardsLen, 0, TSDB_MAX_FIELD_LEN, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "maxRegexStringLen", tsMaxRegexStringLen, 0, TSDB_MAX_FIELD_LEN, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "maxNumOfOrderedRes", tsMaxNumOfOrderedResults, 128, TSDB_MAX_ALLOWED_SQL_LEN, 1) != 0) - return -1; if (cfgAddBool(pCfg, "keepColumnName", tsKeepOriginalColumnName, 1) != 0) return -1; - if (cfgAddInt32(pCfg, "maxBinaryDisplayWidth", tsMaxBinaryDisplayWidth, 1, 65536, 1) != 0) return -1; tsNumOfTaskQueueThreads = tsNumOfCores / 4; tsNumOfTaskQueueThreads = TRANGE(tsNumOfTaskQueueThreads, 1, 2); @@ -500,18 +479,10 @@ static int32_t taosSetClientCfg(SConfig *pCfg) { return -1; } - tsMaxTmrCtrl = cfgGetItem(pCfg, "maxTmrCtrl")->i32; - tsRpcTimer = cfgGetItem(pCfg, "rpcTimer")->i32; - tsRpcMaxTime = cfgGetItem(pCfg, "rpcMaxTime")->i32; - tsRpcForceTcp = cfgGetItem(pCfg, "rpcForceTcp")->i32; tsShellActivityTimer = cfgGetItem(pCfg, "shellActivityTimer")->i32; 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; tsNumOfTaskQueueThreads = cfgGetItem(pCfg, "numOfTaskQueueThreads")->i32; return 0; } @@ -701,6 +672,6 @@ void taosCfgDynamicOptions(const char *option, const char *value) { if (strcasecmp(option, "resetlog") == 0) { taosResetLog(); - cfgDumpCfg(tsCfg, 1, false); + cfgDumpCfg(tsCfg, 0, false); } } diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index 3f5c22dd84..1ac704a019 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -104,7 +104,7 @@ static void dmPrintVersion() { static void dmDumpCfg() { SConfig *pCfg = taosGetCfg(); - cfgDumpCfg(pCfg, 0, 1); + cfgDumpCfg(pCfg, 0, true); } static SDnodeOpt dmGetOpt() { diff --git a/source/libs/sync/src/syncIO.c b/source/libs/sync/src/syncIO.c index 717b1cc756..9be343022e 100644 --- a/source/libs/sync/src/syncIO.c +++ b/source/libs/sync/src/syncIO.c @@ -164,7 +164,6 @@ static int32_t syncIOStartInternal(SSyncIO *io) { taosBlockSIGPIPE(); rpcInit(); - tsRpcForceTcp = 1; // cient rpc init { diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 9a0af24319..1afd301aa0 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -524,6 +524,8 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) { for (int32_t i = 0; i < size; ++i) { SConfigItem *pItem = taosArrayGet(pCfg->array, i); if (tsc && !pItem->tsc) continue; + if (dump && strcmp(pItem->name, "scriptDir") == 0) continue; + if (dump && strcmp(pItem->name, "simDebugFlag") == 0) 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] = ' '; @@ -562,10 +564,10 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) { break; case CFG_DTYPE_FLOAT: if (dump) { - printf("%s %s %f", src, name, pItem->fval); + printf("%s %s %.2f", src, name, pItem->fval); printf("\n"); } else { - uInfo("%s %s %f", src, name, pItem->fval); + uInfo("%s %s %.2f", src, name, pItem->fval); } break; case CFG_DTYPE_STRING: diff --git a/source/util/src/ttimer.c b/source/util/src/ttimer.c index fecc58c236..36b9437b66 100644 --- a/source/util/src/ttimer.c +++ b/source/util/src/ttimer.c @@ -110,7 +110,7 @@ typedef struct time_wheel_t { tmr_obj_t** slots; } time_wheel_t; -int32_t tsMaxTmrCtrl = 512; +static int32_t tsMaxTmrCtrl = 512; static TdThreadOnce tmrModuleInit = PTHREAD_ONCE_INIT; static TdThreadMutex tmrCtrlMutex; diff --git a/tools/shell/src/shellArguments.c b/tools/shell/src/shellArguments.c index e67e00e43e..8adccfb0d5 100644 --- a/tools/shell/src/shellArguments.c +++ b/tools/shell/src/shellArguments.c @@ -59,7 +59,7 @@ void shellPrintHelp() { printf("%s%s%s\n", indent, indent, "Print program version."); } -void shellParseArgsInWindows(int argc, char *argv[]) { +void shellParseArgsWithoutArgp(int argc, char *argv[]) { for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-h") == 0) { if (i < argc - 1) { @@ -97,7 +97,7 @@ void shellParseArgsInWindows(int argc, char *argv[]) { if (i < argc - 1) { arguments->cfgdir = argv[++i]; } else { - fprintf(stderr, "Option -c requires an argument\n"); + fprintf(stderr, "option -c requires an argument\n"); exit(EXIT_FAILURE); } } else if (strcmp(argv[i], "-C") == 0) { @@ -186,10 +186,10 @@ static struct argp_option shellOptions[] = { {"host", 'h', "HOST", 0, "TDengine server FQDN to connect. The default host is localhost."}, {"port", 'P', "PORT", 0, "The TCP/IP port number to use for the connection."}, {"user", 'u', "USER", 0, "The user name to use when connecting to the server."}, - {"password", 'p', "PASSWORD", 0, "The password to use when connecting to the server."}, + {"password", 'p', 0, 0, "The password to use when connecting to the server."}, {"auth", 'a', "AUTH", 0, "The auth string to use when connecting to the server."}, {"generate-auth", 'A', 0, 0, "Generate auth string from password."}, - {"config-dir", 'c', "CONFIG_DIR", 0, "Configuration directory."}, + {"config-dir", 'c', "DIR", 0, "Configuration directory."}, {"dump-config", 'C', 0, 0, "Dump configuration."}, {"commands", 's', "COMMANDS", 0, "Commands to run without enter the shell."}, {"raw-time", 'r', 0, 0, "Output time as uint64_t."}, @@ -197,13 +197,11 @@ static struct argp_option shellOptions[] = { {"database", 'd', "DATABASE", 0, "Database to use when connecting to the server."}, {"check", 'k', 0, 0, "Check the service status."}, {"startup", 't', 0, 0, "Check the details of the service status."}, - {"display-width", 'w', 0, 0, "Set the default binary display width."}, + {"display-width", 'w', "WIDTH", 0, "Set the default binary display width."}, {"netrole", 'n', "NETROLE", 0, "Net role when network connectivity test, options: client|server."}, {"pktlen", 'l', "PKTLEN", 0, "Packet length used for net test, default is 1000 bytes."}, {"pktnum", 'N', "PKTNUM", 0, "Packet numbers used for net test, default is 100."}, - {"version", 'V', 0, 0, "Print client version number."}, - {0}, -}; + {0}}; static error_t shellParseOpt(int32_t key, char *arg, struct argp_state *state) { SShellArgs *arguments = &shell.args; @@ -276,7 +274,7 @@ static error_t shellParseOpt(int32_t key, char *arg, struct argp_state *state) { static struct argp shellArgp = {shellOptions, shellParseOpt, "", ""}; -static void shellParseArgsInLinux(int argc, char *argv[]) { +static void shellParseArgsUseArgp(int argc, char *argv[]) { argp_program_version = shell.info.programVersion; argp_parse(&shellArgp, argc, argv, 0, 0, &shell.args); } @@ -313,7 +311,74 @@ static void shellInitArgs(int argc, char *argv[]) { shell.args.user = TSDB_DEFAULT_USER; } -static int32_t shellCheckArgs() { return 0; } +static int32_t shellCheckArgs() { + SShellArgs *pArgs = &shell.args; + if (pArgs->host != NULL && (strlen(pArgs->host) <= 0 || strlen(pArgs->host) > TSDB_FQDN_LEN)) { + printf("Invalid host:%s\n", pArgs->host); + return -1; + } + + if (pArgs->user != NULL && (strlen(pArgs->user) <= 0 || strlen(pArgs->user) > TSDB_USER_LEN)) { + printf("Invalid user:%s\n", pArgs->user); + return -1; + } + + if (pArgs->auth != NULL && (strlen(pArgs->auth) <= 0 || strlen(pArgs->auth) > TSDB_PASSWORD_LEN)) { + printf("Invalid auth:%s\n", pArgs->auth); + return -1; + } + + if (pArgs->database != NULL && (strlen(pArgs->database) <= 0 || strlen(pArgs->database) > TSDB_DB_NAME_LEN)) { + printf("Invalid database:%s\n", pArgs->database); + return -1; + } + + if (pArgs->file != NULL && (strlen(pArgs->file) <= 0)) { + printf("Invalid file:%s\n", pArgs->file); + return -1; + } + + if (pArgs->cfgdir != NULL) { + if (strlen(pArgs->cfgdir) <= 0 || strlen(pArgs->cfgdir) >= PATH_MAX) { + printf("Invalid cfgdir:%s\n", pArgs->cfgdir); + return -1; + } else { + tstrncpy(configDir, pArgs->cfgdir, PATH_MAX); + } + } + + if (pArgs->commands != NULL && (strlen(pArgs->commands) <= 0)) { + printf("Invalid commands:%s\n", pArgs->commands); + return -1; + } + + if (pArgs->netrole != NULL && !(strcmp(pArgs->netrole, "client") == 0 || strcmp(pArgs->netrole, "server") == 0)) { + printf("Invalid netrole:%s\n", pArgs->netrole); + return -1; + } + + if (pArgs->password != NULL && (strlen(pArgs->password) <= 0)) { + printf("Invalid password\n"); + return -1; + } + + if (pArgs->pktLen <= 0 || pArgs->pktLen > 20 * 1024 * 1024) { + printf("Invalid pktLen:%d, range:[1, 20 * 1024 * 1024]\n", pArgs->pktLen); + return -1; + } + + if (pArgs->pktNum <= 0 || pArgs->pktNum > 1024 * 1024) { + printf("Invalid pktNum:%d, range:[1, 1024 * 1024]\n", pArgs->pktNum); + return -1; + } + + if (pArgs->displayWidth <= 0 || pArgs->displayWidth > 10 * 1024) { + printf("Invalid displayWidth:%d, range:[1, 10 * 1024]\n", pArgs->displayWidth); + return -1; + } + + return 0; +} int32_t shellParseArgs(int32_t argc, char *argv[]) { shellInitArgs(argc, argv); @@ -323,20 +388,20 @@ int32_t shellParseArgs(int32_t argc, char *argv[]) { shell.info.promptHeader = "taos> "; shell.info.promptContinue = " -> "; shell.info.promptSize = 6; - snprintf(shell.info.programVersion, sizeof(shell.info.programVersion), "version: %s\n", version); + snprintf(shell.info.programVersion, sizeof(shell.info.programVersion), "version: %s", version); #if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) shell.info.osname = "Windows"; snprintf(shell.history.file, TSDB_FILENAME_LEN, "C:/TDengine/%s", SHELL_HISTORY_FILE); - shellParseArgsInLinuxAndDarwin(); + shellParseArgsWithoutArgp(); #elif defined(_TD_DARWIN_64) shell.info.osname = "Darwin"; snprintf(shell.history.file, TSDB_FILENAME_LEN, "%s/%s", getpwuid(getuid())->pw_dir, SHELL_HISTORY_FILE); - shellParseArgsInLinuxAndDarwin(); + shellParseArgsWithoutArgp(); #else shell.info.osname = "Linux"; snprintf(shell.history.file, TSDB_FILENAME_LEN, "%s/%s", getenv("HOME"), SHELL_HISTORY_FILE); - shellParseArgsInLinux(argc, argv); + shellParseArgsUseArgp(argc, argv); #endif if (shell.args.abort) { diff --git a/tools/shell/src/shellMain.c b/tools/shell/src/shellMain.c index 6cf8facde0..52bfc2c9a1 100644 --- a/tools/shell/src/shellMain.c +++ b/tools/shell/src/shellMain.c @@ -56,8 +56,7 @@ int main(int argc, char *argv[]) { return 0; } - if (shell.args.netrole != NULL && - (strcmp(shell.args.netrole, "client") == 0 || strcmp(shell.args.netrole, "server")) == 0) { + if (shell.args.netrole != NULL) { shellTestNetWork(); taos_cleanup(); return 0; diff --git a/tools/shell/src/shellUtil.c b/tools/shell/src/shellUtil.c index c74f626516..1529ac0e52 100644 --- a/tools/shell/src/shellUtil.c +++ b/tools/shell/src/shellUtil.c @@ -70,15 +70,21 @@ int32_t shellCheckIntSize() { void shellPrintVersion() { printf("version: %s\n", version); } -void shellGenerateAuth() {} +void shellGenerateAuth() { + char secretEncrypt[TSDB_PASSWORD_LEN + 1] = {0}; + taosEncryptPass_c((uint8_t *)shell.args.password, strlen(shell.args.password), secretEncrypt); + printf("%s\n", secretEncrypt); + fflush(stdout); +} void shellDumpConfig() { SConfig *pCfg = taosGetCfg(); if (pCfg == NULL) { printf("TDengine read global config failed!\n"); } else { - cfgDumpCfg(pCfg, 1, 1); + cfgDumpCfg(pCfg, 1, true); } + fflush(stdout); } void shellCheckServerStatus() { @@ -107,6 +113,7 @@ void shellCheckServerStatus() { if (strlen(details) != 0) { printf("%s\n\n", details); } + fflush(stdout); if (code == TSDB_SRV_STATUS_NETWORK_OK && shell.args.is_startup) { taosMsleep(1000); } else { -- GitLab