Hi Thuan, Thanks for your comments. I will update in V3.
Best Regards, ThienHuynh -----Original Message----- From: Thuan Tran <thuan.t...@dektech.com.au> Sent: Tuesday, July 14, 2020 2:05 PM To: Thien Minh Huynh <thien.m.hu...@dektech.com.au>; Vu Minh Nguyen <vu.m.ngu...@dektech.com.au>; Thang Duc Nguyen <thang.d.ngu...@dektech.com.au> Cc: opensaf-devel@lists.sourceforge.net Subject: RE: [PATCH 1/1] saflogger: avoid saflogger loop forever in resilience [#3198] Hi Thien, Check my inline comments. Best Regards, ThuanTr -----Original Message----- From: Thien Minh Huynh <thien.m.hu...@dektech.com.au> Sent: Tuesday, July 14, 2020 12:03 PM To: Vu Minh Nguyen <vu.m.ngu...@dektech.com.au>; Thuan Tran <thuan.t...@dektech.com.au>; Thang Duc Nguyen <thang.d.ngu...@dektech.com.au> Cc: opensaf-devel@lists.sourceforge.net; Thien Minh Huynh <thien.m.hu...@dektech.com.au> Subject: [PATCH 1/1] saflogger: avoid saflogger loop forever in resilience [#3198] When log resilient mode is enabled and timeout of saflogger is configured larger than logResilienceTimeout , the saflogger will be blocked forever until the underlying filesystem is responsive. The fix is adding a timer to avoid command loop too long. --- src/log/tools/saf_logger.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/log/tools/saf_logger.c b/src/log/tools/saf_logger.c index e9f7e9b36..550e3c58a 100644 --- a/src/log/tools/saf_logger.c +++ b/src/log/tools/saf_logger.c @@ -148,7 +148,8 @@ static SaAisErrorT write_log_record(SaLogHandleT logHandle, int i = 0; struct pollfd fds[1]; int ret; - unsigned int wait_time = 0; + int64_t start_time_us = get_current_SaTime() / 1000; + int64_t wait_time = 0; [Thuan] Can we keep "unsigned int" for wait_time? Then we can reduce changes. i++; @@ -166,7 +167,7 @@ retry: if (errorCode != SA_AIS_OK) { if (wait_time) - fprintf(stderr, "Waited for %u seconds.\n", + fprintf(stderr, "Waited for %ld seconds.\n", wait_time / 1000000); fprintf(stderr, "saLogWriteLogAsync FAILED: %s\n", saf_error(errorCode)); @@ -206,8 +207,9 @@ poll_retry: return SA_AIS_ERR_BAD_OPERATION; } + wait_time = (get_current_SaTime() / 1000) - start_time_us; if (cb_error == SA_AIS_ERR_TRY_AGAIN && - wait_time < g_timeout*ONE_SECOND_TO_NS) { + wait_time < g_timeout * ONE_SECOND_TO_NS) { [Thuan] Can we keep it unchanged? usleep(HUNDRED_MS); wait_time += HUNDRED_MS; goto retry; @@ -221,7 +223,7 @@ poll_retry: if (cb_error != SA_AIS_OK) { if (wait_time) - fprintf(stderr, "Waited for %u seconds.\n", + fprintf(stderr, "Waited for %ld seconds.\n", wait_time / 1000000); fprintf(stderr, "logWriteLogCallbackT FAILED: %s\n", saf_error(cb_error)); -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel