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

Reply via email to