diff --git a/src/client/src/tscSystem.c b/src/client/src/tscSystem.c index ea4cf12f9de399b7ff934ff189fa600930bb6374..0ce767926e61300d0bc3c048985b7175f6ba99ab 100644 --- a/src/client/src/tscSystem.c +++ b/src/client/src/tscSystem.c @@ -171,17 +171,51 @@ void taos_init_imp() { if(0 == tscEmbedded){ taosTmrReset(tscCheckDiskUsage, 10, NULL, tscTmr, &tscCheckDiskUsageTmr); } + int64_t refreshTime = tsMetricMetaKeepTimer < tsMeterMetaKeepTimer ? tsMetricMetaKeepTimer : tsMeterMetaKeepTimer; refreshTime = refreshTime > 2 ? 2 : refreshTime; refreshTime = refreshTime < 1 ? 1 : refreshTime; - if (tscCacheHandle == NULL) tscCacheHandle = taosCacheInit(tscTmr, refreshTime); + if (tscCacheHandle == NULL) { + tscCacheHandle = taosCacheInit(tscTmr, refreshTime); + } tscTrace("client is initialized successfully"); } void taos_init() { pthread_once(&tscinit, taos_init_imp); } +void taos_cleanup() { + if (tscCacheHandle != NULL) { + taosCacheCleanup(tscCacheHandle); +// tscCacheHandle = NULL; + } + + if (tscQhandle != NULL) { + taosCleanUpScheduler(tscQhandle); + tscQhandle = NULL; + } + + taosCloseLogger(); + + if (pVnodeConn != NULL) { + rpcClose(pVnodeConn); + pVnodeConn = NULL; + } + + if (pTscMgmtConn != NULL) { + rpcClose(pTscMgmtConn); + pTscMgmtConn = NULL; + } + + if (tsGlobalConfig != NULL) { + tfree(tsGlobalConfig); + } + + taosMsleep(1000); + taosTmrCleanUp(tscTmr); +} + static int taos_options_imp(TSDB_OPTION option, const char *pStr) { SGlobalConfig *cfg = NULL; diff --git a/src/inc/taos.h b/src/inc/taos.h index 4a815d8ee53cef379454965b38330c356186fdd4..419685bd077a1df862e458be3b7b75ec645d6cd1 100644 --- a/src/inc/taos.h +++ b/src/inc/taos.h @@ -52,6 +52,7 @@ typedef struct taosField { #endif DLL_EXPORT void taos_init(); +DLL_EXPORT void taos_cleanup(); DLL_EXPORT int taos_options(TSDB_OPTION option, const void *arg, ...); DLL_EXPORT TAOS *taos_connect(const char *ip, const char *user, const char *pass, const char *db, uint16_t port); DLL_EXPORT void taos_close(TAOS *taos); diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h index 0315aa1b277a460ebce32107a9a76d2fc24f34a8..fcc5e0a87c715a3096ce160b2df2551d808bc910 100644 --- a/src/kit/shell/inc/shell.h +++ b/src/kit/shell/inc/shell.h @@ -71,7 +71,7 @@ extern void* shellLoopQuery(void* arg); extern void taos_error(TAOS* con); extern int regex_match(const char* s, const char* reg, int cflags); void shellReadCommand(TAOS* con, char command[]); -void shellRunCommand(TAOS* con, char* command); +int32_t shellRunCommand(TAOS* con, char* command); void shellRunCommandOnServer(TAOS* con, char command[]); void read_history(); void write_history(); diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index e291fdc551c5538f5391481065393935d78c65c6..69d0aa6a400a921a278698e7df8ef6340ab37f24 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -166,10 +166,10 @@ void shellReplaceCtrlChar(char *str) { *pstr = '\0'; } -void shellRunCommand(TAOS *con, char *command) { +int32_t shellRunCommand(TAOS *con, char *command) { /* If command is empty just return */ if (regex_match(command, "^[ \t;]*$", REG_EXTENDED)) { - return; + return 0; } /* Update the history vector. */ @@ -193,11 +193,11 @@ void shellRunCommand(TAOS *con, char *command) { if (regex_match(command, "^[ \t]*(quit|q|exit)[ \t;]*$", REG_EXTENDED | REG_ICASE)) { taos_close(con); write_history(); - exitShell(); + return -1; } else if (regex_match(command, "^[\t ]*clear[ \t;]*$", REG_EXTENDED | REG_ICASE)) { // If clear the screen. system("clear"); - return; + return 0; } else if (regex_match(command, "^[ \t]*source[\t ]+[^ ]+[ \t;]*$", REG_EXTENDED | REG_ICASE)) { /* If source file. */ char *c_ptr = strtok(command, " ;"); @@ -209,6 +209,8 @@ void shellRunCommand(TAOS *con, char *command) { } else { shellRunCommandOnServer(con, command); } + + return 0; } void shellRunCommandOnServer(TAOS *con, char command[]) { diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index cdf59a7293d8915153b6f148c86a52321b5384d9..15cee042e9e1b9f77353b2be7696a6b0f5eda7d7 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -295,6 +295,7 @@ void *shellLoopQuery(void *arg) { tscError("failed to malloc command"); return NULL; } + while (1) { // Read command from shell. @@ -304,11 +305,16 @@ void *shellLoopQuery(void *arg) { reset_terminal_mode(); // Run the command - shellRunCommand(con, command); + if (shellRunCommand(con, command) != 0) { + break; + } } + + tfree(command); + exitShell(); pthread_cleanup_pop(1); - + return NULL; } @@ -487,6 +493,7 @@ void showOnScreen(Command *cmd) { void cleanup_handler(void *arg) { tcsetattr(0, TCSANOW, &oldtio); } void exitShell() { - tcsetattr(0, TCSANOW, &oldtio); + /*int32_t ret =*/ tcsetattr(STDIN_FILENO, TCSANOW, &oldtio); + taos_cleanup(); exit(EXIT_SUCCESS); } diff --git a/src/kit/shell/src/shellMain.c b/src/kit/shell/src/shellMain.c index 81a41453e8ab05b572c762a5abbcc97749e3ed62..b39fba285ff09a5e83632e17299565fcd1b4a943 100644 --- a/src/kit/shell/src/shellMain.c +++ b/src/kit/shell/src/shellMain.c @@ -95,7 +95,7 @@ int main(int argc, char* argv[]) { exit(EXIT_FAILURE); } - /* Interupt handler. */ + /* Interrupt handler. */ struct sigaction act; memset(&act, 0, sizeof(struct sigaction)); diff --git a/src/util/src/hash.c b/src/util/src/hash.c index f0a23ec0937a42adca0f8bcfd71846c7340bb025..6beb195d36ab5043ed1659c8d9cb838810519d2b 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -101,8 +101,6 @@ static void doUpdateHashTable(SHashObj *pHashObj, SHashNode *pNode) { if (pNode->next) { (pNode->next)->prev = pNode; } - - pTrace("key:%s %p update hash table", pNode->key, pNode); } /** @@ -153,18 +151,18 @@ static void taosHashTableResize(SHashObj *pHashObj) { SHashNode *pNode = NULL; SHashNode *pNext = NULL; - int32_t newSize = pHashObj->capacity << 1U; + int32_t newSize = pHashObj->capacity << 1u; if (newSize > HASH_MAX_CAPACITY) { - pTrace("current capacity:%d, maximum capacity:%d, no resize applied due to limitation is reached", - pHashObj->capacity, HASH_MAX_CAPACITY); +// pTrace("current capacity:%d, maximum capacity:%d, no resize applied due to limitation is reached", +// pHashObj->capacity, HASH_MAX_CAPACITY); return; } - int64_t st = taosGetTimestampUs(); +// int64_t st = taosGetTimestampUs(); SHashEntry **pNewEntry = realloc(pHashObj->hashList, sizeof(SHashEntry *) * newSize); if (pNewEntry == NULL) { - pTrace("cache resize failed due to out of memory, capacity remain:%d", pHashObj->capacity); +// pTrace("cache resize failed due to out of memory, capacity remain:%d", pHashObj->capacity); return; } @@ -230,10 +228,9 @@ static void taosHashTableResize(SHashObj *pHashObj) { } } - int64_t et = taosGetTimestampUs(); - - pTrace("hash table resize completed, new capacity:%d, load factor:%f, elapsed time:%fms", pHashObj->capacity, - ((double)pHashObj->size) / pHashObj->capacity, (et - st) / 1000.0); +// int64_t et = taosGetTimestampUs(); +// pTrace("hash table resize completed, new capacity:%d, load factor:%f, elapsed time:%fms", pHashObj->capacity, +// ((double)pHashObj->size) / pHashObj->capacity, (et - st) / 1000.0); } /**