From 177fe4bade08440a0ae2c2679d5972b8e316ec66 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 13 Nov 2021 14:16:01 -0500 Subject: [PATCH] logger: log write file allow single retry on write failure --- src/modules/logger/log_writer_file.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/logger/log_writer_file.cpp b/src/modules/logger/log_writer_file.cpp index bdfa286433..a0ee9c6ea8 100644 --- a/src/modules/logger/log_writer_file.cpp +++ b/src/modules/logger/log_writer_file.cpp @@ -354,7 +354,6 @@ void LogWriterFile::run() } int poll_count = 0; - int written = 0; hrt_abstime last_fsync = hrt_absolute_time(); pthread_mutex_lock(&_mtx); @@ -420,7 +419,14 @@ void LogWriterFile::run() #endif - written = buffer.write_to_file(read_ptr, available, call_fsync); + int written = buffer.write_to_file(read_ptr, available, call_fsync); + + if (written < 0) { + // retry once + PX4_ERR("write failed errno:%i (%s), retrying", errno, strerror(errno)); + px4_usleep(10000); // 10 milliseconds + written = buffer.write_to_file(read_ptr, available, call_fsync); + } /* buffer.mark_read() requires _mtx to be locked */ pthread_mutex_lock(&_mtx);