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 | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/log/tools/saf_logger.c b/src/log/tools/saf_logger.c
index e9f7e9b36..7a7e192b2 100644
--- a/src/log/tools/saf_logger.c
+++ b/src/log/tools/saf_logger.c
@@ -148,6 +148,7 @@ static SaAisErrorT write_log_record(SaLogHandleT logHandle,
int i = 0;
struct pollfd fds[1];
int ret;
+ int64_t start_time_us = get_current_SaTime() / 1000;
unsigned int wait_time = 0;
i++;
@@ -206,6 +207,7 @@ 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) {
usleep(HUNDRED_MS);
--
2.17.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel