import logging
from pathlib import Path
from yr.cli.component.base import ComponentLauncher
logger = logging.getLogger(__name__)
class DsWorkerLauncher(ComponentLauncher):
def health_check(self) -> bool:
logger.info(f"{self.name}: performing custom health check")
return self._check_file_health()
def prestart_hook(self) -> None:
logger.info(f"{self.name}: prestart hook executing")
rocksdb_dir = self.resolver.rendered_config[self.name]["args"]["rocksdb_store_dir"]
socket_dir = self.resolver.rendered_config[self.name]["args"]["unix_domain_socket_dir"]
logs_dir = self.resolver.rendered_config[self.name]["args"]["log_dir"]
dirs = [rocksdb_dir, socket_dir, logs_dir]
if self.resolver.rendered_config[self.name].get("spill", False):
spill_dir = self.resolver.rendered_config[self.name]["args"].get("spill_directory")
if spill_dir:
dirs.append(spill_dir)
for dir_path in dirs:
Path(dir_path).mkdir(parents=True, exist_ok=True)
logger.info(f"Created directories for {self.name}: {dirs}")