You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					40 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					40 lines
				
				1.0 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#!/usr/bin/env python3
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import shutil
							 | 
						||
| 
								 | 
							
								import threading
							 | 
						||
| 
								 | 
							
								from selfdrive.swaglog import cloudlog
							 | 
						||
| 
								 | 
							
								from selfdrive.loggerd.config import ROOT, get_available_bytes
							 | 
						||
| 
								 | 
							
								from selfdrive.loggerd.uploader import listdir_by_creation
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def deleter_thread(exit_event):
							 | 
						||
| 
								 | 
							
								  while not exit_event.is_set():
							 | 
						||
| 
								 | 
							
								    available_bytes = get_available_bytes()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if available_bytes is not None and available_bytes < (5 * 1024 * 1024 * 1024):
							 | 
						||
| 
								 | 
							
								      # remove the earliest directory we can
							 | 
						||
| 
								 | 
							
								      dirs = listdir_by_creation(ROOT)
							 | 
						||
| 
								 | 
							
								      for delete_dir in dirs:
							 | 
						||
| 
								 | 
							
								        delete_path = os.path.join(ROOT, delete_dir)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if any(name.endswith(".lock") for name in os.listdir(delete_path)):
							 | 
						||
| 
								 | 
							
								          continue
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        try:
							 | 
						||
| 
								 | 
							
								          cloudlog.info("deleting %s" % delete_path)
							 | 
						||
| 
								 | 
							
								          shutil.rmtree(delete_path)
							 | 
						||
| 
								 | 
							
								          break
							 | 
						||
| 
								 | 
							
								        except OSError:
							 | 
						||
| 
								 | 
							
								          cloudlog.exception("issue deleting %s" % delete_path)
							 | 
						||
| 
								 | 
							
								      exit_event.wait(.1)
							 | 
						||
| 
								 | 
							
								    else:
							 | 
						||
| 
								 | 
							
								      exit_event.wait(30)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def main(gctx=None):
							 | 
						||
| 
								 | 
							
								  deleter_thread(threading.Event())
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == "__main__":
							 | 
						||
| 
								 | 
							
								  main()
							 |