From a69e2a8045e299ad658eb89cfe74d8193099dfba Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Wed, 19 Apr 2023 15:33:02 +0800 Subject: [PATCH] fix(os): fix the link error in unit test cases. --- include/common/tcommon.h | 2 ++ include/util/tlog.h | 1 - source/common/src/tmisce.c | 61 +++++++++++++++++++++++++++++++++++++ source/util/src/tlog.c | 62 -------------------------------------- 4 files changed, 63 insertions(+), 63 deletions(-) diff --git a/include/common/tcommon.h b/include/common/tcommon.h index a97c68be49..c9eaae74cd 100644 --- a/include/common/tcommon.h +++ b/include/common/tcommon.h @@ -379,6 +379,8 @@ typedef struct STUidTagInfo { #define UD_GROUPID_COLUMN_INDEX 1 #define UD_TAG_COLUMN_INDEX 2 +int32_t taosGenCrashJsonMsg(int signum, char **pMsg, int64_t clusterId, int64_t startTime); + #ifdef __cplusplus } #endif diff --git a/include/util/tlog.h b/include/util/tlog.h index 0071b3d32c..541b7589b7 100644 --- a/include/util/tlog.h +++ b/include/util/tlog.h @@ -102,7 +102,6 @@ bool taosAssertRelease(bool condition); void taosLogCrashInfo(char *nodeType, char *pMsg, int64_t msgLen, int signum, void *sigInfo); void taosReadCrashInfo(char *filepath, char **pMsg, int64_t *pMsgLen, TdFilePtr *pFd); void taosReleaseCrashLogFile(TdFilePtr pFile, bool truncateFile); -int32_t taosGenCrashJsonMsg(int signum, char **pMsg, int64_t clusterId, int64_t startTime); // clang-format off #define uFatal(...) { if (uDebugFlag & DEBUG_FATAL) { taosPrintLog("UTL FATAL", DEBUG_FATAL, tsLogEmbedded ? 255 : uDebugFlag, __VA_ARGS__); }} diff --git a/source/common/src/tmisce.c b/source/common/src/tmisce.c index 59afce1bbb..c195f5387c 100644 --- a/source/common/src/tmisce.c +++ b/source/common/src/tmisce.c @@ -15,6 +15,7 @@ #define _DEFAULT_SOURCE #include "tmisce.h" +#include "tjson.h" #include "tglobal.h" #include "tlog.h" #include "tname.h" @@ -87,3 +88,63 @@ SEpSet getEpSet_s(SCorEpSet* pEpSet) { return ep; } + +int32_t taosGenCrashJsonMsg(int signum, char** pMsg, int64_t clusterId, int64_t startTime) { + SJson* pJson = tjsonCreateObject(); + if (pJson == NULL) return -1; + char tmp[4096] = {0}; + + tjsonAddDoubleToObject(pJson, "reportVersion", 1); + + tjsonAddIntegerToObject(pJson, "clusterId", clusterId); + tjsonAddIntegerToObject(pJson, "startTime", startTime); + + // Do NOT invoke the taosGetFqdn here. + // this function may be invoked when memory exception occurs,so we should assume that it is running in a memory locked + // environment. The lock operation by taosGetFqdn may cause this program deadlock. + tjsonAddStringToObject(pJson, "fqdn", tsLocalFqdn); + + tjsonAddIntegerToObject(pJson, "pid", taosGetPId()); + + taosGetAppName(tmp, NULL); + tjsonAddStringToObject(pJson, "appName", tmp); + + if (taosGetOsReleaseName(tmp, sizeof(tmp)) == 0) { + tjsonAddStringToObject(pJson, "os", tmp); + } + + float numOfCores = 0; + if (taosGetCpuInfo(tmp, sizeof(tmp), &numOfCores) == 0) { + tjsonAddStringToObject(pJson, "cpuModel", tmp); + tjsonAddDoubleToObject(pJson, "numOfCpu", numOfCores); + } else { + tjsonAddDoubleToObject(pJson, "numOfCpu", tsNumOfCores); + } + + snprintf(tmp, sizeof(tmp), "%" PRId64 " kB", tsTotalMemoryKB); + tjsonAddStringToObject(pJson, "memory", tmp); + + tjsonAddStringToObject(pJson, "version", version); + tjsonAddStringToObject(pJson, "buildInfo", buildinfo); + tjsonAddStringToObject(pJson, "gitInfo", gitinfo); + + tjsonAddIntegerToObject(pJson, "crashSig", signum); + tjsonAddIntegerToObject(pJson, "crashTs", taosGetTimestampUs()); + +#ifdef _TD_DARWIN_64 + taosLogTraceToBuf(tmp, sizeof(tmp), 4); +#elif !defined(WINDOWS) + taosLogTraceToBuf(tmp, sizeof(tmp), 3); +#else + taosLogTraceToBuf(tmp, sizeof(tmp), 8); +#endif + + tjsonAddStringToObject(pJson, "stackInfo", tmp); + + char* pCont = tjsonToString(pJson); + tjsonDelete(pJson); + + *pMsg = pCont; + + return TSDB_CODE_SUCCESS; +} diff --git a/source/util/src/tlog.c b/source/util/src/tlog.c index e1cf01aa2f..2a18f420cd 100644 --- a/source/util/src/tlog.c +++ b/source/util/src/tlog.c @@ -17,7 +17,6 @@ #include "tlog.h" #include "os.h" #include "tconfig.h" -#include "tutil.h" #include "tjson.h" #include "tglobal.h" @@ -781,67 +780,6 @@ bool taosAssertDebug(bool condition, const char *file, int32_t line, const char return true; } -int32_t taosGenCrashJsonMsg(int signum, char** pMsg, int64_t clusterId, int64_t startTime) { - SJson* pJson = tjsonCreateObject(); - if (pJson == NULL) return -1; - char tmp[4096] = {0}; - - tjsonAddDoubleToObject(pJson, "reportVersion", 1); - - tjsonAddIntegerToObject(pJson, "clusterId", clusterId); - tjsonAddIntegerToObject(pJson, "startTime", startTime); - - // Do NOT invoke the taosGetFqdn here. - // this function may be invoked when memory exception occurs,so we should assume that it is running in a memory locked - // environment. The lock operation by taosGetFqdn may cause this program deadlock. - tjsonAddStringToObject(pJson, "fqdn", tsLocalFqdn); - - tjsonAddIntegerToObject(pJson, "pid", taosGetPId()); - - taosGetAppName(tmp, NULL); - tjsonAddStringToObject(pJson, "appName", tmp); - - if (taosGetOsReleaseName(tmp, sizeof(tmp)) == 0) { - tjsonAddStringToObject(pJson, "os", tmp); - } - - float numOfCores = 0; - if (taosGetCpuInfo(tmp, sizeof(tmp), &numOfCores) == 0) { - tjsonAddStringToObject(pJson, "cpuModel", tmp); - tjsonAddDoubleToObject(pJson, "numOfCpu", numOfCores); - } else { - tjsonAddDoubleToObject(pJson, "numOfCpu", tsNumOfCores); - } - - snprintf(tmp, sizeof(tmp), "%" PRId64 " kB", tsTotalMemoryKB); - tjsonAddStringToObject(pJson, "memory", tmp); - - tjsonAddStringToObject(pJson, "version", version); - tjsonAddStringToObject(pJson, "buildInfo", buildinfo); - tjsonAddStringToObject(pJson, "gitInfo", gitinfo); - - tjsonAddIntegerToObject(pJson, "crashSig", signum); - tjsonAddIntegerToObject(pJson, "crashTs", taosGetTimestampUs()); - -#ifdef _TD_DARWIN_64 - taosLogTraceToBuf(tmp, sizeof(tmp), 4); -#elif !defined(WINDOWS) - taosLogTraceToBuf(tmp, sizeof(tmp), 3); -#else - taosLogTraceToBuf(tmp, sizeof(tmp), 8); -#endif - - tjsonAddStringToObject(pJson, "stackInfo", tmp); - - char* pCont = tjsonToString(pJson); - tjsonDelete(pJson); - - *pMsg = pCont; - - return TSDB_CODE_SUCCESS; -} - - void taosLogCrashInfo(char* nodeType, char* pMsg, int64_t msgLen, int signum, void *sigInfo) { const char *flags = "UTL FATAL "; ELogLevel level = DEBUG_FATAL; -- GitLab