Skip to content

Commit 7a5e051

Browse files
committed
Merge branch 'feature/flush-logs' into testing
2 parents f911fc6 + 2dc1b54 commit 7a5e051

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

runusb/__main__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,10 +283,19 @@ def cleanup(self) -> None:
283283
# The process did not exit after 5 seconds, so kill it.
284284
self._send_signal(signal.SIGKILL)
285285

286+
# Ensure logs have finished writing
287+
self.log_thread.join()
288+
289+
# Sync filesystems after run finishes
290+
os.sync()
291+
286292
def close(self) -> None:
287293
self.cleanup()
288294
LED_CONTROLLER.set_status(LedStatus.NoUSB)
289295
LED_CONTROLLER.set_code(False)
296+
297+
# Explicitly close handler before removing it
298+
self.handler.close()
290299
USERCODE_LOGGER.removeHandler(self.handler)
291300

292301
def _send_signal(self, sig: int) -> None:
@@ -321,6 +330,9 @@ def _setup_logging(self, log_dir: str) -> None:
321330
os.path.join(log_dir, LOG_NAME),
322331
mode='w', # Overwrite the log file
323332
)
333+
# Write through to avoid buffering the log file since the USB might be
334+
# removed at any time
335+
self.handler.stream.reconfigure(write_through=True)
324336
REL_TIME_FILTER.reset_time_reference() # type: ignore[union-attr]
325337
self.handler.setFormatter(TieredFormatter(
326338
fmt='[%(reltime)08.3f - %(levelname)s] %(message)s',

0 commit comments

Comments
 (0)