diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index d5fa4c8c479494b82d97224af013f9b30cf0e961..fb76f38fe51711b17bdb940adf0d241143ebe936 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -127,7 +127,7 @@ static void clientHandleResp(SCliConn* conn) { // buf's mem alread translated to rpcMsg.pCont transClearBuffer(&conn->readBuf); - SRpcMsg rpcMsg; + SRpcMsg rpcMsg = {0}; rpcMsg.contLen = transContLenFromMsg(pHead->msgLen); rpcMsg.pCont = transContFromHead((char*)pHead); rpcMsg.code = pHead->code; diff --git a/source/util/src/tconfig.c b/source/util/src/tconfig.c index 0ee1b9e1d6968e3cf38cc5c1f722dfe1502639a3..dc9fa33595defda2234d51f4c936a02551b7cefb 100644 --- a/source/util/src/tconfig.c +++ b/source/util/src/tconfig.c @@ -96,6 +96,7 @@ void cfgCleanup(SConfig *pCfg) { SConfigItem *pItem = taosHashIterate(pCfg->hash, NULL); while (pItem != NULL) { cfgFreeItem(pItem); + tfree(pItem->name); pItem = taosHashIterate(pCfg->hash, pItem); } taosHashCleanup(pCfg->hash); @@ -249,9 +250,7 @@ static int32_t cfgSetString(SConfigItem *pItem, const char *value, ECfgSrcType s } static int32_t cfgSetDir(SConfigItem *pItem, const char *value, ECfgSrcType stype) { - char *tmp = strdup(value); - if (tmp == NULL || cfgCheckAndSetDir(pItem, value) != 0) { - free(tmp); + if (cfgCheckAndSetDir(pItem, value) != 0) { 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); @@ -263,9 +262,7 @@ static int32_t cfgSetDir(SConfigItem *pItem, const char *value, ECfgSrcType styp } static int32_t cfgSetLocale(SConfigItem *pItem, const char *value, ECfgSrcType stype) { - char *tmp = strdup(value); - if (tmp == NULL || cfgCheckAndSetLocale(pItem, value) != 0) { - free(tmp); + if (cfgCheckAndSetLocale(pItem, value) != 0) { 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); @@ -277,9 +274,7 @@ static int32_t cfgSetLocale(SConfigItem *pItem, const char *value, ECfgSrcType s } static int32_t cfgSetCharset(SConfigItem *pItem, const char *value, ECfgSrcType stype) { - char *tmp = strdup(value); - if (tmp == NULL || cfgCheckAndSetCharset(pItem, value) != 0) { - free(tmp); + if (cfgCheckAndSetCharset(pItem, value) != 0) { 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); @@ -291,9 +286,7 @@ static int32_t cfgSetCharset(SConfigItem *pItem, const char *value, ECfgSrcType } static int32_t cfgSetTimezone(SConfigItem *pItem, const char *value, ECfgSrcType stype) { - char *tmp = strdup(value); - if (tmp == NULL || cfgCheckAndSetTimezone(pItem, value) != 0) { - free(tmp); + if (cfgCheckAndSetTimezone(pItem, value) != 0) { 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); @@ -366,11 +359,11 @@ int32_t cfgSetItem(SConfig *pCfg, const char *name, const char *value, ECfgSrcTy } SConfigItem *cfgGetItem(SConfig *pCfg, const char *name) { - char lowcaseName[CFG_NAME_MAX_LEN + 1] = {0}; - memcpy(lowcaseName, name, CFG_NAME_MAX_LEN); - strntolower(lowcaseName, name, CFG_NAME_MAX_LEN); + int32_t len = strlen(name); + char lowcaseName[CFG_NAME_MAX_LEN + 1] = {0}; + strntolower(lowcaseName, name, TMIN(CFG_NAME_MAX_LEN, len)); - SConfigItem *pItem = taosHashGet(pCfg->hash, lowcaseName, strlen(lowcaseName) + 1); + SConfigItem *pItem = taosHashGet(pCfg->hash, lowcaseName, len + 1); if (pItem == NULL) { terrno = TSDB_CODE_CFG_NOT_FOUND; } @@ -386,11 +379,11 @@ static int32_t cfgAddItem(SConfig *pCfg, SConfigItem *pItem, const char *name) { return -1; } - char lowcaseName[CFG_NAME_MAX_LEN + 1] = {0}; - memcpy(lowcaseName, name, CFG_NAME_MAX_LEN); - strntolower(lowcaseName, name, CFG_NAME_MAX_LEN); + int32_t len = strlen(name); + char lowcaseName[CFG_NAME_MAX_LEN + 1] = {0}; + strntolower(lowcaseName, name, TMIN(CFG_NAME_MAX_LEN, len)); - if (taosHashPut(pCfg->hash, lowcaseName, strlen(lowcaseName) + 1, pItem, sizeof(SConfigItem)) != 0) { + if (taosHashPut(pCfg->hash, lowcaseName, len + 1, pItem, sizeof(SConfigItem)) != 0) { if (pItem->dtype == CFG_DTYPE_STRING) { free(pItem->str); } diff --git a/source/util/src/tlog.c b/source/util/src/tlog.c index 11b4555737508153dc54c282050890863dd830be..2ed8d6e347357f458e3035b6e877717cda669d50 100644 --- a/source/util/src/tlog.c +++ b/source/util/src/tlog.c @@ -64,16 +64,17 @@ typedef struct { pthread_mutex_t logMutex; } SLogObj; -int8_t tscEmbeddedInUtil = 0; +static int8_t tsLogInited = 0; +static SLogObj tsLogObj = {.fileNum = 1}; +int8_t tscEmbeddedInUtil = 0; int32_t tsLogKeepDays = 0; bool tsAsyncLog = true; -int8_t tsLogInited = 0; -int64_t asyncLogLostLines = 0; -int32_t writeInterval = LOG_DEFAULT_INTERVAL; +int32_t tsNumOfLogLines = 10000000; +int64_t tsAsyncLogLostLines = 0; +int32_t tsWriteInterval = LOG_DEFAULT_INTERVAL; // log -int32_t tsNumOfLogLines = 10000000; int32_t dDebugFlag = 135; int32_t vDebugFlag = 135; int32_t mDebugFlag = 131; @@ -95,13 +96,11 @@ int64_t dbgSmallWN = 0; int64_t dbgBigWN = 0; int64_t dbgWSize = 0; -static SLogObj tsLogObj = {.fileNum = 1}; static void *taosAsyncOutputLog(void *param); static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen); static SLogBuff *taosLogBuffNew(int32_t bufSize); static void taosCloseLogByFd(TdFilePtr pFile); static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum); -extern void taosPrintCfg(); static int32_t taosCompressFile(char *srcFileName, char *destFileName); static int32_t taosStartLog() { @@ -125,7 +124,6 @@ int32_t taosInitLog(const char *logName, int maxFiles) { if (tsLogObj.logHandle == NULL) return -1; if (taosOpenLogFile(fullName, tsNumOfLogLines, maxFiles) < 0) return -1; if (taosStartLog() < 0) return -1; - tsLogInited = true; return 0; } @@ -137,8 +135,6 @@ static void taosStopLog() { void taosCloseLog() { taosStopLog(); - // tsem_post(&(tsLogObj.logHandle->buffNotEmpty)); - taosMsleep(LOG_MAX_INTERVAL / 1000); if (taosCheckPthreadValid(tsLogObj.logHandle->asyncThread)) { pthread_join(tsLogObj.logHandle->asyncThread, NULL); } @@ -218,7 +214,6 @@ static void *taosThreadToOpenNewFile(void *param) { uInfo(" new log file:%d is opened", tsLogObj.flag); uInfo("=================================="); - // taosPrintCfg(); taosKeepOldLog(keepName); return NULL; @@ -498,12 +493,6 @@ void taosPrintLongString(const char *flags, int32_t dflag, const char *format, . if (dflag & DEBUG_SCREEN) write(1, buffer, (uint32_t)len); } -#if 0 -void taosCloseLog() { - taosCloseLogByFd(tsLogObj.logHandle->pFile); -} -#endif - static void taosCloseLogByFd(TdFilePtr pFile) { if (pFile != NULL) { taosUnLockLogFile(pFile); @@ -536,15 +525,6 @@ _err: return NULL; } -#if 0 -static void taosLogBuffDestroy(SLogBuff *tLogBuff) { - tsem_destroy(&(tLogBuff->buffNotEmpty)); - pthread_mutex_destroy(&(tLogBuff->buffMutex)); - free(tLogBuff->buffer); - tfree(tLogBuff); -} -#endif - static void taosCopyLogBuffer(SLogBuff *tLogBuff, int32_t start, int32_t end, char *msg, int32_t msgLen) { if (start > end) { memcpy(LOG_BUF_BUFFER(tLogBuff) + end, msg, msgLen); @@ -582,7 +562,7 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) if (remainSize <= msgLen || ((lostLine > 0) && (remainSize <= (msgLen + tmpBufLen)))) { lostLine++; - asyncLogLostLines++; + tsAsyncLogLostLines++; pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); return -1; } @@ -627,13 +607,13 @@ static void taosWriteLog(SLogBuff *tLogBuff) { if (start == end) { dbgEmptyW++; - writeInterval = LOG_MAX_INTERVAL; + tsWriteInterval = LOG_MAX_INTERVAL; return; } pollSize = taosGetLogRemainSize(tLogBuff, start, end); if (pollSize < tLogBuff->minBuffSize) { - lastDuration += writeInterval; + lastDuration += tsWriteInterval; if (lastDuration < LOG_MAX_WAIT_MSEC) { break; } @@ -656,15 +636,15 @@ static void taosWriteLog(SLogBuff *tLogBuff) { if (pollSize < tLogBuff->minBuffSize) { dbgSmallWN++; - if (writeInterval < LOG_MAX_INTERVAL) { - writeInterval += LOG_INTERVAL_STEP; + if (tsWriteInterval < LOG_MAX_INTERVAL) { + tsWriteInterval += LOG_INTERVAL_STEP; } } else if (pollSize > LOG_BUF_SIZE(tLogBuff) / 3) { dbgBigWN++; - writeInterval = LOG_MIN_INTERVAL; + tsWriteInterval = LOG_MIN_INTERVAL; } else if (pollSize > LOG_BUF_SIZE(tLogBuff) / 4) { - if (writeInterval > LOG_MIN_INTERVAL) { - writeInterval -= LOG_INTERVAL_STEP; + if (tsWriteInterval > LOG_MIN_INTERVAL) { + tsWriteInterval -= LOG_INTERVAL_STEP; } } @@ -678,7 +658,7 @@ static void taosWriteLog(SLogBuff *tLogBuff) { break; } - writeInterval = LOG_MIN_INTERVAL; + tsWriteInterval = LOG_MIN_INTERVAL; remainChecked = 1; } while (1); @@ -689,7 +669,7 @@ static void *taosAsyncOutputLog(void *param) { setThreadName("log"); while (1) { - taosMsleep(writeInterval); + taosMsleep(tsWriteInterval); // Polling the buffer taosWriteLog(tLogBuff);