From 5f3ce43e2e14338b89fa43e428e76822a844b106 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 29 Jan 2021 13:58:39 +0800 Subject: [PATCH 01/14] fix bug --- src/util/src/tlog.c | 59 ++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index e0fe51e22a..20607d8cf8 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -68,6 +68,8 @@ int8_t tsAsyncLog = 1; float tsTotalLogDirGB = 0; float tsAvailLogDirGB = 0; float tsMinimalLogDirGB = 1.0f; +int64_t asyncLogLostLines = 0; + #ifdef _TD_POWER_ char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power"; #else @@ -527,24 +529,7 @@ static void taosLogBuffDestroy(SLogBuff *tLogBuff) { } #endif -static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) { - int32_t start = 0; - int32_t end = 0; - int32_t remainSize = 0; - - if (tLogBuff == NULL || tLogBuff->stop) return -1; - - pthread_mutex_lock(&LOG_BUF_MUTEX(tLogBuff)); - start = LOG_BUF_START(tLogBuff); - end = LOG_BUF_END(tLogBuff); - - remainSize = (start > end) ? (end - start - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1); - - if (remainSize <= msgLen) { - pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); - return -1; - } - +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); } else { @@ -556,6 +541,42 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) } } LOG_BUF_END(tLogBuff) = (LOG_BUF_END(tLogBuff) + msgLen) % LOG_BUF_SIZE(tLogBuff); +} + +static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) { + int32_t start = 0; + int32_t end = 0; + int32_t remainSize = 0; + static int64_t lostLine = 0; + char tmpBuf[40] = {0}; + int32_t tmpBufLen = 0; + + if (tLogBuff == NULL || tLogBuff->stop) return -1; + + pthread_mutex_lock(&LOG_BUF_MUTEX(tLogBuff)); + start = LOG_BUF_START(tLogBuff); + end = LOG_BUF_END(tLogBuff); + + remainSize = (start > end) ? (end - start - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1); + + if (lostLine > 0) { + sprintf(tmpBuf, "\n...Lost %"PRId64" lines here...\n", lostLine); + tmpBufLen = strlen(tmpBuf); + } + + if (remainSize <= msgLen || ((lostLine > 0) && (remainSize <= (msgLen + tmpBufLen)))) { + lostLine++; + asyncLogLostLines++; + pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); + return -1; + } + + if (lostLine > 0) { + taosCopyLogBuffer(tLogBuff, start, end, tmpBuf, tmpBufLen); + lostLine = 0; + } + + taosCopyLogBuffer(tLogBuff, LOG_BUF_START(tLogBuff), LOG_BUF_END(tLogBuff), msg, msgLen); // TODO : put string in the buffer @@ -603,7 +624,7 @@ static void *taosAsyncOutputLog(void *param) { // Polling the buffer while (1) { - log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_UNIT); + log_size = taosPollLogBuffer(tLogBuff, tempBuffer, sizeof(tempBuffer)); if (log_size) { taosWrite(tLogBuff->fd, tempBuffer, log_size); LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff); From 431ce4615ad024a3e2553418ba2349475d6b6682 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 29 Jan 2021 14:13:13 +0800 Subject: [PATCH 02/14] fix bug --- src/util/src/tlog.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 20607d8cf8..aae716d271 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -560,7 +560,7 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) remainSize = (start > end) ? (end - start - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1); if (lostLine > 0) { - sprintf(tmpBuf, "\n...Lost %"PRId64" lines here...\n", lostLine); + sprintf(tmpBuf, "...Lost %"PRId64" lines here...\n", lostLine); tmpBufLen = strlen(tmpBuf); } @@ -617,7 +617,7 @@ static void *taosAsyncOutputLog(void *param) { SLogBuff *tLogBuff = (SLogBuff *)param; int32_t log_size = 0; - char tempBuffer[TSDB_DEFAULT_LOG_BUF_UNIT]; + char tempBuffer[TSDB_DEFAULT_LOG_BUF_SIZE]; while (1) { tsem_wait(&(tLogBuff->buffNotEmpty)); From fcc50d417995d84a8d974cc5cd8eebe549b2da7a Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 29 Jan 2021 14:32:34 +0800 Subject: [PATCH 03/14] fix bug --- src/util/src/tlog.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index aae716d271..193101b2ee 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -28,9 +28,7 @@ #define MAX_LOGLINE_DUMP_CONTENT_SIZE (MAX_LOGLINE_DUMP_SIZE - 100) #define LOG_FILE_NAME_LEN 300 -#define TSDB_DEFAULT_LOG_BUF_SIZE (512 * 1024) // 512K -#define TSDB_MIN_LOG_BUF_SIZE 1024 // 1K -#define TSDB_MAX_LOG_BUF_SIZE (1024 * 1024) // 1M +#define TSDB_DEFAULT_LOG_BUF_SIZE (4 * 1024 * 1024) // 4MB #define TSDB_DEFAULT_LOG_BUF_UNIT 1024 // 1K #define LOG_BUF_BUFFER(x) ((x)->buffer) @@ -497,8 +495,6 @@ static void taosCloseLogByFd(int32_t fd) { static SLogBuff *taosLogBuffNew(int32_t bufSize) { SLogBuff *tLogBuff = NULL; - if (bufSize < TSDB_MIN_LOG_BUF_SIZE || bufSize > TSDB_MAX_LOG_BUF_SIZE) return NULL; - tLogBuff = calloc(1, sizeof(SLogBuff)); if (tLogBuff == NULL) return NULL; @@ -617,14 +613,16 @@ static void *taosAsyncOutputLog(void *param) { SLogBuff *tLogBuff = (SLogBuff *)param; int32_t log_size = 0; - char tempBuffer[TSDB_DEFAULT_LOG_BUF_SIZE]; + char *tempBuffer = malloc(TSDB_DEFAULT_LOG_BUF_SIZE); + assert(tempBuffer); + while (1) { tsem_wait(&(tLogBuff->buffNotEmpty)); // Polling the buffer while (1) { - log_size = taosPollLogBuffer(tLogBuff, tempBuffer, sizeof(tempBuffer)); + log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_SIZE); if (log_size) { taosWrite(tLogBuff->fd, tempBuffer, log_size); LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff); From 9fe6d9c10dd491be767d39cf914b5bb13b11cf90 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 29 Jan 2021 15:18:35 +0800 Subject: [PATCH 04/14] fix bug --- src/util/src/tlog.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 193101b2ee..7454e4ac3e 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -28,8 +28,7 @@ #define MAX_LOGLINE_DUMP_CONTENT_SIZE (MAX_LOGLINE_DUMP_SIZE - 100) #define LOG_FILE_NAME_LEN 300 -#define TSDB_DEFAULT_LOG_BUF_SIZE (4 * 1024 * 1024) // 4MB -#define TSDB_DEFAULT_LOG_BUF_UNIT 1024 // 1K +#define TSDB_DEFAULT_LOG_BUF_SIZE (10 * 1024 * 1024) // 10MB #define LOG_BUF_BUFFER(x) ((x)->buffer) #define LOG_BUF_START(x) ((x)->buffStart) @@ -546,14 +545,17 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) static int64_t lostLine = 0; char tmpBuf[40] = {0}; int32_t tmpBufLen = 0; + static int32_t waitLock = 0; if (tLogBuff == NULL || tLogBuff->stop) return -1; + atomic_add_fetch_32(&waitLock, 1); + pthread_mutex_lock(&LOG_BUF_MUTEX(tLogBuff)); start = LOG_BUF_START(tLogBuff); end = LOG_BUF_END(tLogBuff); - remainSize = (start > end) ? (end - start - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1); + remainSize = (start > end) ? (start - end - 1) : (start + LOG_BUF_SIZE(tLogBuff) - end - 1); if (lostLine > 0) { sprintf(tmpBuf, "...Lost %"PRId64" lines here...\n", lostLine); @@ -564,6 +566,7 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) lostLine++; asyncLogLostLines++; pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); + atomic_sub_fetch_32(&waitLock, 1); return -1; } @@ -574,12 +577,15 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) taosCopyLogBuffer(tLogBuff, LOG_BUF_START(tLogBuff), LOG_BUF_END(tLogBuff), msg, msgLen); - // TODO : put string in the buffer + int32_t w = atomic_sub_fetch_32(&waitLock, 1); - tsem_post(&(tLogBuff->buffNotEmpty)); + if (w <= 0 || ((remainSize - msgLen - tmpBufLen) < (LOG_BUF_SIZE(tLogBuff) * 4 /5))) { + tsem_post(&(tLogBuff->buffNotEmpty)); + } pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); + return 0; } From c816365e53f491db10b7d6b640f372135485220c Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Mon, 1 Feb 2021 09:32:40 +0800 Subject: [PATCH 05/14] fix bug --- src/util/src/tlog.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 7454e4ac3e..f2ea813a8e 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -67,6 +67,14 @@ float tsAvailLogDirGB = 0; float tsMinimalLogDirGB = 1.0f; int64_t asyncLogLostLines = 0; + +int64_t dbgPostN = 0; +int64_t dbgNoPostN = 0; +int64_t dbgEmptyW = 0; +int64_t dbgW = 0; +int64_t dbgSmallW = 0; +int64_t dbgWSize = 0; + #ifdef _TD_POWER_ char tsLogDir[TSDB_FILENAME_LEN] = "/var/log/power"; #else @@ -581,6 +589,9 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) if (w <= 0 || ((remainSize - msgLen - tmpBufLen) < (LOG_BUF_SIZE(tLogBuff) * 4 /5))) { tsem_post(&(tLogBuff->buffNotEmpty)); + dbgPostN++; + } else { + dbgNoPostN++; } pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); @@ -630,9 +641,15 @@ static void *taosAsyncOutputLog(void *param) { while (1) { log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_SIZE); if (log_size) { + dbgW++; + if (log_size < 1048576) { + dbgSmallW++; + } + dbgWSize+=log_size; taosWrite(tLogBuff->fd, tempBuffer, log_size); LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff); } else { + dbgEmptyW++; break; } } From 24844d2e26f9e54d083042ac1f34951504458d44 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Mon, 1 Feb 2021 10:41:27 +0800 Subject: [PATCH 06/14] fix bug --- src/util/src/tlog.c | 113 ++++++++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 45 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index f2ea813a8e..494da588c3 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -30,6 +30,12 @@ #define LOG_FILE_NAME_LEN 300 #define TSDB_DEFAULT_LOG_BUF_SIZE (10 * 1024 * 1024) // 10MB +#define DEFAULT_LOG_INTERVAL 50000 +#define LOG_INTERVAL_STEP 5000 +#define MIN_LOG_INTERVAL 5000 +#define MAX_LOG_INTERVAL 50000 + + #define LOG_BUF_BUFFER(x) ((x)->buffer) #define LOG_BUF_START(x) ((x)->buffStart) #define LOG_BUF_END(x) ((x)->buffEnd) @@ -66,13 +72,15 @@ float tsTotalLogDirGB = 0; float tsAvailLogDirGB = 0; float tsMinimalLogDirGB = 1.0f; int64_t asyncLogLostLines = 0; +int32_t writeInterval = DEFAULT_LOG_INTERVAL; int64_t dbgPostN = 0; int64_t dbgNoPostN = 0; int64_t dbgEmptyW = 0; -int64_t dbgW = 0; -int64_t dbgSmallW = 0; +int64_t dbgWN = 0; +int64_t dbgSmallWN = 0; +int64_t dbgBigWN = 0; int64_t dbgWSize = 0; #ifdef _TD_POWER_ @@ -115,7 +123,8 @@ static void taosStopLog() { void taosCloseLog() { taosStopLog(); - tsem_post(&(tsLogObj.logHandle->buffNotEmpty)); + //tsem_post(&(tsLogObj.logHandle->buffNotEmpty)); + usleep(MAX_LOG_INTERVAL); if (taosCheckPthreadValid(tsLogObj.logHandle->asyncThread)) { pthread_join(tsLogObj.logHandle->asyncThread, NULL); } @@ -513,7 +522,7 @@ static SLogBuff *taosLogBuffNew(int32_t bufSize) { tLogBuff->stop = 0; if (pthread_mutex_init(&LOG_BUF_MUTEX(tLogBuff), NULL) < 0) goto _err; - tsem_init(&(tLogBuff->buffNotEmpty), 0, 0); + //tsem_init(&(tLogBuff->buffNotEmpty), 0, 0); return tLogBuff; @@ -557,7 +566,7 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) if (tLogBuff == NULL || tLogBuff->stop) return -1; - atomic_add_fetch_32(&waitLock, 1); + //atomic_add_fetch_32(&waitLock, 1); pthread_mutex_lock(&LOG_BUF_MUTEX(tLogBuff)); start = LOG_BUF_START(tLogBuff); @@ -585,14 +594,15 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) taosCopyLogBuffer(tLogBuff, LOG_BUF_START(tLogBuff), LOG_BUF_END(tLogBuff), msg, msgLen); - int32_t w = atomic_sub_fetch_32(&waitLock, 1); - + //int32_t w = atomic_sub_fetch_32(&waitLock, 1); + /* if (w <= 0 || ((remainSize - msgLen - tmpBufLen) < (LOG_BUF_SIZE(tLogBuff) * 4 /5))) { tsem_post(&(tLogBuff->buffNotEmpty)); dbgPostN++; } else { dbgNoPostN++; } + */ pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); @@ -600,59 +610,72 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) return 0; } -static int32_t taosPollLogBuffer(SLogBuff *tLogBuff, char *buf, int32_t bufSize) { +static int32_t taosGetLogRemainSize(SLogBuff *tLogBuff) { int32_t start = LOG_BUF_START(tLogBuff); int32_t end = LOG_BUF_END(tLogBuff); - int32_t pollSize = 0; + int32_t rSize = end - start; - if (start == end) { - return 0; - } else if (start < end) { - pollSize = MIN(end - start, bufSize); + return rSize >= 0 ? rSize : LOG_BUF_SIZE(tLogBuff) + rSize; +} - memcpy(buf, LOG_BUF_BUFFER(tLogBuff) + start, pollSize); - return pollSize; - } else { - pollSize = MIN(end + LOG_BUF_SIZE(tLogBuff) - start, bufSize); - if (pollSize > LOG_BUF_SIZE(tLogBuff) - start) { - int32_t tsize = LOG_BUF_SIZE(tLogBuff) - start; - memcpy(buf, LOG_BUF_BUFFER(tLogBuff) + start, tsize); - memcpy(buf + tsize, LOG_BUF_BUFFER(tLogBuff), pollSize - tsize); +static void taosWriteLog(SLogBuff *tLogBuff) { + do { + int32_t start = LOG_BUF_START(tLogBuff); + int32_t end = LOG_BUF_END(tLogBuff); + int32_t pollSize = 0; + if (start == end) { + dbgEmptyW++; + writeInterval = MAX_LOG_INTERVAL; + return; + } else if (start < end) { + pollSize = end - start; + + taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff) + start, pollSize); } else { - memcpy(buf, LOG_BUF_BUFFER(tLogBuff) + start, pollSize); + int32_t tsize = LOG_BUF_SIZE(tLogBuff) - start; + taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff) + start, tsize); + + taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff), end); + + pollSize = tsize + end; } - return pollSize; - } + + dbgWN++; + + if (pollSize < 1048576) { + dbgSmallWN++; + if (writeInterval < MAX_LOG_INTERVAL) { + writeInterval += LOG_INTERVAL_STEP; + } + } else if (pollSize > 4 * 1048576) { + dbgBigWN++; + writeInterval = MIN_LOG_INTERVAL; + } + + dbgWSize+=pollSize; + + LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff); + + int32_t rsize = taosGetLogRemainSize(tLogBuff); + if (rsize < 1048576) { + break; + } + + writeInterval = MIN_LOG_INTERVAL; + }while (1); } static void *taosAsyncOutputLog(void *param) { SLogBuff *tLogBuff = (SLogBuff *)param; - int32_t log_size = 0; - - char *tempBuffer = malloc(TSDB_DEFAULT_LOG_BUF_SIZE); - - assert(tempBuffer); while (1) { - tsem_wait(&(tLogBuff->buffNotEmpty)); + //tsem_wait(&(tLogBuff->buffNotEmpty)); + + usleep(writeInterval); // Polling the buffer - while (1) { - log_size = taosPollLogBuffer(tLogBuff, tempBuffer, TSDB_DEFAULT_LOG_BUF_SIZE); - if (log_size) { - dbgW++; - if (log_size < 1048576) { - dbgSmallW++; - } - dbgWSize+=log_size; - taosWrite(tLogBuff->fd, tempBuffer, log_size); - LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + log_size) % LOG_BUF_SIZE(tLogBuff); - } else { - dbgEmptyW++; - break; - } - } + taosWriteLog(tLogBuff); if (tLogBuff->stop) break; } From f7a5abf93296913e69ac00b0884d49776ca9346f Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Mon, 1 Feb 2021 11:08:31 +0800 Subject: [PATCH 07/14] fix bug --- src/util/src/tlog.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 494da588c3..9565c49df4 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -74,9 +74,6 @@ float tsMinimalLogDirGB = 1.0f; int64_t asyncLogLostLines = 0; int32_t writeInterval = DEFAULT_LOG_INTERVAL; - -int64_t dbgPostN = 0; -int64_t dbgNoPostN = 0; int64_t dbgEmptyW = 0; int64_t dbgWN = 0; int64_t dbgSmallWN = 0; @@ -562,12 +559,9 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) static int64_t lostLine = 0; char tmpBuf[40] = {0}; int32_t tmpBufLen = 0; - static int32_t waitLock = 0; if (tLogBuff == NULL || tLogBuff->stop) return -1; - //atomic_add_fetch_32(&waitLock, 1); - pthread_mutex_lock(&LOG_BUF_MUTEX(tLogBuff)); start = LOG_BUF_START(tLogBuff); end = LOG_BUF_END(tLogBuff); @@ -583,7 +577,6 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) lostLine++; asyncLogLostLines++; pthread_mutex_unlock(&LOG_BUF_MUTEX(tLogBuff)); - atomic_sub_fetch_32(&waitLock, 1); return -1; } @@ -642,18 +635,17 @@ static void taosWriteLog(SLogBuff *tLogBuff) { } dbgWN++; + dbgWSize+=pollSize; - if (pollSize < 1048576) { + if (pollSize < LOG_BUF_SIZE(tLogBuff)/10) { dbgSmallWN++; if (writeInterval < MAX_LOG_INTERVAL) { writeInterval += LOG_INTERVAL_STEP; } - } else if (pollSize > 4 * 1048576) { + } else if (pollSize > LOG_BUF_SIZE(tLogBuff)/3) { dbgBigWN++; writeInterval = MIN_LOG_INTERVAL; } - - dbgWSize+=pollSize; LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff); From 0cf88e120fa64d28eb7078a0714c247491e51b10 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Mon, 1 Feb 2021 11:30:30 +0800 Subject: [PATCH 08/14] fix bug --- src/util/src/tlog.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 9565c49df4..462d074398 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -28,7 +28,7 @@ #define MAX_LOGLINE_DUMP_CONTENT_SIZE (MAX_LOGLINE_DUMP_SIZE - 100) #define LOG_FILE_NAME_LEN 300 -#define TSDB_DEFAULT_LOG_BUF_SIZE (10 * 1024 * 1024) // 10MB +#define TSDB_DEFAULT_LOG_BUF_SIZE (20 * 1024 * 1024) // 20MB #define DEFAULT_LOG_INTERVAL 50000 #define LOG_INTERVAL_STEP 5000 @@ -645,6 +645,8 @@ static void taosWriteLog(SLogBuff *tLogBuff) { } else if (pollSize > LOG_BUF_SIZE(tLogBuff)/3) { dbgBigWN++; writeInterval = MIN_LOG_INTERVAL; + } else if (pollSize > LOG_BUF_SIZE(tLogBuff)/4) { + writeInterval -= LOG_INTERVAL_STEP; } LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff); From 98036d544f29ec8cb0d8ef4dba0d8c39d63b70cd Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 5 Feb 2021 15:47:15 +0800 Subject: [PATCH 09/14] fix bu --- src/util/src/tlog.c | 54 ++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 462d074398..ace97438f2 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -34,7 +34,7 @@ #define LOG_INTERVAL_STEP 5000 #define MIN_LOG_INTERVAL 5000 #define MAX_LOG_INTERVAL 50000 - +#define LOG_MAX_WAIT_USEC 1000000 #define LOG_BUF_BUFFER(x) ((x)->buffer) #define LOG_BUF_START(x) ((x)->buffStart) @@ -47,6 +47,7 @@ typedef struct { int32_t buffStart; int32_t buffEnd; int32_t buffSize; + int32_t minBuffSize; int32_t fd; int32_t stop; pthread_t asyncThread; @@ -516,6 +517,7 @@ static SLogBuff *taosLogBuffNew(int32_t bufSize) { LOG_BUF_START(tLogBuff) = LOG_BUF_END(tLogBuff) = 0; LOG_BUF_SIZE(tLogBuff) = bufSize; + tLogBuff->minBuffSize = bufSize / 10; tLogBuff->stop = 0; if (pthread_mutex_init(&LOG_BUF_MUTEX(tLogBuff), NULL) < 0) goto _err; @@ -603,41 +605,52 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) return 0; } -static int32_t taosGetLogRemainSize(SLogBuff *tLogBuff) { - int32_t start = LOG_BUF_START(tLogBuff); - int32_t end = LOG_BUF_END(tLogBuff); +static int32_t taosGetLogRemainSize(SLogBuff *tLogBuff, int32_t start, int32_t end) { int32_t rSize = end - start; return rSize >= 0 ? rSize : LOG_BUF_SIZE(tLogBuff) + rSize; } static void taosWriteLog(SLogBuff *tLogBuff) { + static int32_t lastDuration = 0; + int32_t remainChecked = 0; + int32_t start, end, pollSize; + do { - int32_t start = LOG_BUF_START(tLogBuff); - int32_t end = LOG_BUF_END(tLogBuff); - int32_t pollSize = 0; + if (remainChecked == 0) { + start = LOG_BUF_START(tLogBuff); + end = LOG_BUF_END(tLogBuff); - if (start == end) { - dbgEmptyW++; - writeInterval = MAX_LOG_INTERVAL; - return; - } else if (start < end) { - pollSize = end - start; + if (start == end) { + dbgEmptyW++; + writeInterval = MAX_LOG_INTERVAL; + return; + } + pollSize = taosGetLogRemainSize(tLogBuff, start, end); + if (pollSize < tLogBuff->minBuffSize) { + lastDuration += writeInterval; + if (lastDuration < LOG_MAX_WAIT_USEC) { + break; + } + } + + lastDuration = 0; + } + + if (start < end) { taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff) + start, pollSize); } else { int32_t tsize = LOG_BUF_SIZE(tLogBuff) - start; taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff) + start, tsize); taosWrite(tLogBuff->fd, LOG_BUF_BUFFER(tLogBuff), end); - - pollSize = tsize + end; } dbgWN++; dbgWSize+=pollSize; - if (pollSize < LOG_BUF_SIZE(tLogBuff)/10) { + if (pollSize < tLogBuff->minBuffSize) { dbgSmallWN++; if (writeInterval < MAX_LOG_INTERVAL) { writeInterval += LOG_INTERVAL_STEP; @@ -651,12 +664,17 @@ static void taosWriteLog(SLogBuff *tLogBuff) { LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff); - int32_t rsize = taosGetLogRemainSize(tLogBuff); - if (rsize < 1048576) { + start = LOG_BUF_START(tLogBuff); + end = LOG_BUF_END(tLogBuff); + + int32_t pollSize = taosGetLogRemainSize(tLogBuff, start, end); + if (pollSize < tLogBuff->minBuffSize) { break; } writeInterval = MIN_LOG_INTERVAL; + + remainChecked = 1; }while (1); } From ba1f8990160098f0c7e9b7f654f9cb5cc759366d Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Fri, 5 Feb 2021 16:29:27 +0800 Subject: [PATCH 10/14] fix bug --- src/util/src/tlog.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index ace97438f2..b81553c587 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -30,10 +30,10 @@ #define LOG_FILE_NAME_LEN 300 #define TSDB_DEFAULT_LOG_BUF_SIZE (20 * 1024 * 1024) // 20MB -#define DEFAULT_LOG_INTERVAL 50000 +#define DEFAULT_LOG_INTERVAL 25000 #define LOG_INTERVAL_STEP 5000 #define MIN_LOG_INTERVAL 5000 -#define MAX_LOG_INTERVAL 50000 +#define MAX_LOG_INTERVAL 25000 #define LOG_MAX_WAIT_USEC 1000000 #define LOG_BUF_BUFFER(x) ((x)->buffer) From 266746a4e147742a908979c1b77da4bb6cbf5039 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Sat, 6 Feb 2021 11:36:58 +0800 Subject: [PATCH 11/14] fix bug --- src/util/src/tlog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index b81553c587..a0ad93cf22 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -667,7 +667,7 @@ static void taosWriteLog(SLogBuff *tLogBuff) { start = LOG_BUF_START(tLogBuff); end = LOG_BUF_END(tLogBuff); - int32_t pollSize = taosGetLogRemainSize(tLogBuff, start, end); + pollSize = taosGetLogRemainSize(tLogBuff, start, end); if (pollSize < tLogBuff->minBuffSize) { break; } From 8c03652ba4b598d3c4ee535079f49c5141a425c7 Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Sat, 6 Feb 2021 11:58:03 +0800 Subject: [PATCH 12/14] fix bug --- src/util/src/tlog.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index a0ad93cf22..7c5301130b 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -659,7 +659,9 @@ static void taosWriteLog(SLogBuff *tLogBuff) { dbgBigWN++; writeInterval = MIN_LOG_INTERVAL; } else if (pollSize > LOG_BUF_SIZE(tLogBuff)/4) { - writeInterval -= LOG_INTERVAL_STEP; + if (writeInterval > MIN_LOG_INTERVAL) { + writeInterval -= LOG_INTERVAL_STEP; + } } LOG_BUF_START(tLogBuff) = (LOG_BUF_START(tLogBuff) + pollSize) % LOG_BUF_SIZE(tLogBuff); From cafe84d1108c17c2d3938b30e8f4f25df3beaeeb Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Thu, 25 Feb 2021 11:25:01 +0800 Subject: [PATCH 13/14] fix bug --- src/util/src/tlog.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 9bf69b46b5..933a65131b 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -30,11 +30,11 @@ #define LOG_FILE_NAME_LEN 300 #define TSDB_DEFAULT_LOG_BUF_SIZE (20 * 1024 * 1024) // 20MB -#define DEFAULT_LOG_INTERVAL 25000 -#define LOG_INTERVAL_STEP 5000 -#define MIN_LOG_INTERVAL 5000 -#define MAX_LOG_INTERVAL 25000 -#define LOG_MAX_WAIT_USEC 1000000 +#define DEFAULT_LOG_INTERVAL 25 +#define LOG_INTERVAL_STEP 5 +#define MIN_LOG_INTERVAL 5 +#define MAX_LOG_INTERVAL 25 +#define LOG_MAX_WAIT_MSEC 1000 #define LOG_BUF_BUFFER(x) ((x)->buffer) #define LOG_BUF_START(x) ((x)->buffStart) @@ -122,7 +122,7 @@ static void taosStopLog() { void taosCloseLog() { taosStopLog(); //tsem_post(&(tsLogObj.logHandle->buffNotEmpty)); - usleep(MAX_LOG_INTERVAL); + taosMsleep(MAX_LOG_INTERVAL/1000); if (taosCheckPthreadValid(tsLogObj.logHandle->asyncThread)) { pthread_join(tsLogObj.logHandle->asyncThread, NULL); } @@ -632,7 +632,7 @@ static void taosWriteLog(SLogBuff *tLogBuff) { pollSize = taosGetLogRemainSize(tLogBuff, start, end); if (pollSize < tLogBuff->minBuffSize) { lastDuration += writeInterval; - if (lastDuration < LOG_MAX_WAIT_USEC) { + if (lastDuration < LOG_MAX_WAIT_MSEC) { break; } } @@ -688,7 +688,7 @@ static void *taosAsyncOutputLog(void *param) { while (1) { //tsem_wait(&(tLogBuff->buffNotEmpty)); - usleep(writeInterval); + taosMsleep(writeInterval); // Polling the buffer taosWriteLog(tLogBuff); From 848401b4702b977803e63babd6c92447da112d6f Mon Sep 17 00:00:00 2001 From: dapan1121 <89396746@qq.com> Date: Thu, 25 Feb 2021 14:29:09 +0800 Subject: [PATCH 14/14] fix windows compile err --- src/util/src/tlog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 933a65131b..9770da49ac 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -574,7 +574,7 @@ static int32_t taosPushLogBuffer(SLogBuff *tLogBuff, char *msg, int32_t msgLen) if (lostLine > 0) { sprintf(tmpBuf, "...Lost %"PRId64" lines here...\n", lostLine); - tmpBufLen = strlen(tmpBuf); + tmpBufLen = (int32_t)strlen(tmpBuf); } if (remainSize <= msgLen || ((lostLine > 0) && (remainSize <= (msgLen + tmpBufLen)))) {