process replay: create openpilot prefix directories once (#35864)

this is so slow
pull/35869/head
Shane Smiskol 1 week ago committed by GitHub
parent 1de1640689
commit c4298ce287
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 18
      common/prefix.py
  2. 3
      selfdrive/test/process_replay/process_replay.py

@ -9,20 +9,19 @@ from openpilot.system.hardware.hw import Paths
from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT
class OpenpilotPrefix: class OpenpilotPrefix:
def __init__(self, prefix: str = None, clean_dirs_on_exit: bool = True, shared_download_cache: bool = False): def __init__(self, prefix: str = None, create_dirs_on_enter: bool = True, clean_dirs_on_exit: bool = True, shared_download_cache: bool = False):
self.prefix = prefix if prefix else str(uuid.uuid4().hex[0:15]) self.prefix = prefix if prefix else str(uuid.uuid4().hex[0:15])
self.msgq_path = os.path.join(Paths.shm_path(), self.prefix) self.msgq_path = os.path.join(Paths.shm_path(), self.prefix)
self.create_dirs_on_enter = create_dirs_on_enter
self.clean_dirs_on_exit = clean_dirs_on_exit self.clean_dirs_on_exit = clean_dirs_on_exit
self.shared_download_cache = shared_download_cache self.shared_download_cache = shared_download_cache
def __enter__(self): def __enter__(self):
self.original_prefix = os.environ.get('OPENPILOT_PREFIX', None) self.original_prefix = os.environ.get('OPENPILOT_PREFIX', None)
os.environ['OPENPILOT_PREFIX'] = self.prefix os.environ['OPENPILOT_PREFIX'] = self.prefix
try:
os.mkdir(self.msgq_path) if self.create_dirs_on_enter:
except FileExistsError: self.create_dirs()
pass
os.makedirs(Paths.log_root(), exist_ok=True)
if self.shared_download_cache: if self.shared_download_cache:
os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT
@ -40,6 +39,13 @@ class OpenpilotPrefix:
pass pass
return False return False
def create_dirs(self):
try:
os.mkdir(self.msgq_path)
except FileExistsError:
pass
os.makedirs(Paths.log_root(), exist_ok=True)
def clean_dirs(self): def clean_dirs(self):
symlink_path = Params().get_param_path() symlink_path = Params().get_param_path()
if os.path.exists(symlink_path): if os.path.exists(symlink_path):

@ -147,7 +147,7 @@ class ProcessConfig:
class ProcessContainer: class ProcessContainer:
def __init__(self, cfg: ProcessConfig): def __init__(self, cfg: ProcessConfig):
self.prefix = OpenpilotPrefix(clean_dirs_on_exit=False) self.prefix = OpenpilotPrefix(create_dirs_on_enter=False, clean_dirs_on_exit=False)
self.cfg = copy.deepcopy(cfg) self.cfg = copy.deepcopy(cfg)
self.process = copy.deepcopy(managed_processes[cfg.proc_name]) self.process = copy.deepcopy(managed_processes[cfg.proc_name])
self.msg_queue: list[capnp._DynamicStructReader] = [] self.msg_queue: list[capnp._DynamicStructReader] = []
@ -229,6 +229,7 @@ class ProcessContainer:
fingerprint: str | None, capture_output: bool fingerprint: str | None, capture_output: bool
): ):
with self.prefix as p: with self.prefix as p:
self.prefix.create_dirs()
self._setup_env(params_config, environ_config) self._setup_env(params_config, environ_config)
if self.cfg.config_callback is not None: if self.cfg.config_callback is not None:

Loading…
Cancel
Save