File tree Expand file tree Collapse file tree 1 file changed +13
-0
lines changed
Expand file tree Collapse file tree 1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change @@ -283,6 +283,16 @@ 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+ # Explicitly close handler before removing it
290+ self .handler .close ()
291+ USERCODE_LOGGER .removeHandler (self .handler )
292+
293+ # Sync filesystems before reporting status
294+ os .sync ()
295+
286296 def close (self ) -> None :
287297 self .cleanup ()
288298 LED_CONTROLLER .set_status (LedStatus .NoUSB )
@@ -321,6 +331,9 @@ def _setup_logging(self, log_dir: str) -> None:
321331 os .path .join (log_dir , LOG_NAME ),
322332 mode = 'w' , # Overwrite the log file
323333 )
334+ # Write through to avoid buffering the log file since the USB might be
335+ # removed at any time
336+ self .handler .stream .reconfigure (write_through = True )
324337 REL_TIME_FILTER .reset_time_reference () # type: ignore[union-attr]
325338 self .handler .setFormatter (TieredFormatter (
326339 fmt = '[%(reltime)08.3f - %(levelname)s] %(message)s' ,
You can’t perform that action at this time.
0 commit comments