From 0f0fa840eae06d403406316d4b404c1a2a18539a Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 2 Jul 2024 09:34:32 +0800 Subject: [PATCH] fix:[TS-4921]refactor reporting logic for slow log --- source/client/src/clientMonitor.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/source/client/src/clientMonitor.c b/source/client/src/clientMonitor.c index e4d256185d..b30224c510 100644 --- a/source/client/src/clientMonitor.c +++ b/source/client/src/clientMonitor.c @@ -330,7 +330,7 @@ static void monitorWriteSlowLog2File(MonitorSlowLogData* slowLogData, char *tmpP } taosGetTmpfilePath(tmpPath, clusterId, path); uInfo("[monitor] create slow log file:%s", path); - pFile = taosOpenFile(path, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_APPEND | TD_FILE_READ | TD_FILE_TRUNC); + pFile = taosOpenFile(path, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_APPEND | TD_FILE_READ | TD_FILE_TRUNC | TD_FILE_STREAM); if (pFile == NULL) { terrno = TAOS_SYSTEM_ERROR(errno); uError("failed to open file:%s since %s", path, terrstr()); @@ -378,7 +378,7 @@ static void monitorWriteSlowLog2File(MonitorSlowLogData* slowLogData, char *tmpP uDebug("[monitor] write slow log to file:%p, clusterId:%"PRIx64, pFile, slowLogData->clusterId); } -static char* readFile(TdFilePtr pFile, int64_t *offset, bool* isEnd){ +static char* readFileByLine(TdFilePtr pFile, int64_t *offset, bool* isEnd){ if(taosLSeekFile(pFile, *offset, SEEK_SET) < 0){ uError("failed to seek file:%p code: %d", pFile, errno); return NULL; @@ -446,7 +446,7 @@ static int32_t sendSlowLog(int64_t clusterId, char* data, TdFilePtr pFile, int64 static void monitorSendSlowLogAtBeginning(int64_t clusterId, char* fileName, TdFilePtr pFile, int64_t offset, void* pTransporter, SEpSet *epSet){ bool isEnd = false; - char* data = readFile(pFile, &offset, &isEnd); + char* data = readFileByLine(pFile, &offset, &isEnd); if(isEnd){ taosFtruncateFile(pFile, 0); taosUnLockFile(pFile); @@ -465,7 +465,7 @@ static void monitorSendSlowLogAtRunning(int64_t clusterId){ void* tmp = taosHashGet(monitorSlowLogHash, &clusterId, LONG_BYTES); SlowLogClient* pClient = (*(SlowLogClient**)tmp); bool isEnd = false; - char* data = readFile(pClient->pFile, &pClient->offset, &isEnd); + char* data = readFileByLine(pClient->pFile, &pClient->offset, &isEnd); if(isEnd){ if(taosFtruncateFile(pClient->pFile, 0) < 0){ uError("failed to truncate file:%p code: %d", pClient->pFile, errno); @@ -488,7 +488,7 @@ static bool monitorSendSlowLogAtQuit(int64_t clusterId) { SlowLogClient* pClient = (*(SlowLogClient**)tmp); bool isEnd = false; - char* data = readFile(pClient->pFile, &pClient->offset, &isEnd); + char* data = readFileByLine(pClient->pFile, &pClient->offset, &isEnd); if(isEnd){ taosUnLockFile(pClient->pFile); taosCloseFile(&(pClient->pFile)); @@ -517,8 +517,7 @@ static void monitorSendAllSlowLogAtQuit(){ SEpSet ep = getEpSet_s(&pInst->mgmtEp); bool isEnd = false; int64_t offset = 0; - char* data = readFile(pClient->pFile, &offset, &isEnd); - + char* data = readFileByLine(pClient->pFile, &offset, &isEnd); if(data != NULL && sendSlowLog(*clusterId, data, NULL, offset, SLOW_LOG_READ_QUIT, NULL, pInst->pTransporter, &ep) == 0){ quitCnt ++; } @@ -539,7 +538,7 @@ static void monitorSendAllSlowLog(){ SEpSet ep = getEpSet_s(&pInst->mgmtEp); bool isEnd = false; int64_t offset = 0; - char* data = readFile(pClient->pFile, &offset, &isEnd); + char* data = readFileByLine(pClient->pFile, &offset, &isEnd); if(data != NULL){ sendSlowLog(*clusterId, data, NULL, offset, SLOW_LOG_READ_RUNNING, NULL, pInst->pTransporter, &ep); } @@ -587,7 +586,7 @@ static void monitorSendAllSlowLogFromTempDir(int64_t clusterId){ char filename[PATH_MAX] = {0}; snprintf(filename, sizeof(filename), "%s%s", tmpPath, name); - TdFilePtr pFile = taosOpenFile(filename, TD_FILE_READ); + TdFilePtr pFile = taosOpenFile(filename, TD_FILE_READ | TD_FILE_STREAM | TD_FILE_TRUNC); if (pFile == NULL) { uError("failed to open file:%s since %s", filename, terrstr()); continue;