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:
283
283
# The process did not exit after 5 seconds, so kill it.
284
284
self ._send_signal (signal .SIGKILL )
285
285
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
+
286
296
def close (self ) -> None :
287
297
self .cleanup ()
288
298
LED_CONTROLLER .set_status (LedStatus .NoUSB )
@@ -321,6 +331,9 @@ def _setup_logging(self, log_dir: str) -> None:
321
331
os .path .join (log_dir , LOG_NAME ),
322
332
mode = 'w' , # Overwrite the log file
323
333
)
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 )
324
337
REL_TIME_FILTER .reset_time_reference () # type: ignore[union-attr]
325
338
self .handler .setFormatter (TieredFormatter (
326
339
fmt = '[%(reltime)08.3f - %(levelname)s] %(message)s' ,
You can’t perform that action at this time.
0 commit comments