Skip to content

Commit 054ed12

Browse files
authored
Merge pull request #72 from sourcebots/feature/flush-logs
Attempt to more consistently flush logs
2 parents ad64ee2 + 2dc1b54 commit 054ed12

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
@@ -361,11 +361,20 @@ def cleanup(self) -> None:
361361
# The process did not exit after 5 seconds, so kill it.
362362
self._send_signal(signal.SIGKILL)
363363

364+
# Ensure logs have finished writing
365+
self.log_thread.join()
366+
367+
# Sync filesystems after run finishes
368+
os.sync()
369+
364370
def close(self) -> None:
365371
self.cleanup()
366372
MQTT_SETTINGS.extra_data["run_uuid"] = "" # Reset the run UUID
367373
LED_CONTROLLER.set_status(LedStatus.NoUSB)
368374
LED_CONTROLLER.set_code(False)
375+
376+
# Explicitly close handler before removing it
377+
self.handler.close()
369378
USERCODE_LOGGER.removeHandler(self.handler)
370379
MQTT_SETTINGS.active_usercode = None
371380

@@ -404,6 +413,9 @@ def _setup_logging(self, log_dir: str) -> None:
404413
os.path.join(log_dir, LOG_NAME),
405414
mode='w', # Overwrite the log file
406415
)
416+
# Write through to avoid buffering the log file since the USB might be
417+
# removed at any time
418+
self.handler.stream.reconfigure(write_through=True)
407419
REL_TIME_FILTER.reset_time_reference() # type: ignore[union-attr]
408420
self.handler.setFormatter(TieredFormatter(
409421
fmt='[%(reltime)08.3f - %(levelname)s] %(message)s',

0 commit comments

Comments
 (0)