From b3020ab282d165e926b89bf3e6edab2c43ce6e17 Mon Sep 17 00:00:00 2001 From: Hubert Deng Date: Fri, 6 Jun 2025 14:45:33 -0700 Subject: [PATCH 1/3] multithread bringing up supervisor programs --- devservices/commands/up.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/devservices/commands/up.py b/devservices/commands/up.py index 98554ef0..259e7996 100644 --- a/devservices/commands/up.py +++ b/devservices/commands/up.py @@ -381,6 +381,14 @@ def bring_up_docker_compose_services( exit(1) +def _start_supervisor_program( + manager: SupervisorManager, program: str, status: Status +) -> None: + """Start a single supervisor program.""" + status.info(f"Starting {program}") + manager.start_process(program) + + def bring_up_supervisor_programs( service: Service, supervisor_programs: list[str], status: Status ) -> None: @@ -403,6 +411,10 @@ def bring_up_supervisor_programs( status.info("Starting supervisor daemon") manager.start_supervisor_daemon() - for program in supervisor_programs: - status.info(f"Starting {program}") - manager.start_process(program) + with concurrent.futures.ThreadPoolExecutor() as executor: + futures = [ + executor.submit(_start_supervisor_program, manager, program, status) + for program in supervisor_programs + ] + for future in concurrent.futures.as_completed(futures): + _ = future.result() From d9ec7224091b69e2143bb422afc8ee9fc49c10e6 Mon Sep 17 00:00:00 2001 From: Hubert Deng Date: Mon, 9 Jun 2025 15:11:02 -0700 Subject: [PATCH 2/3] also multithread bringing down processes --- devservices/commands/down.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/devservices/commands/down.py b/devservices/commands/down.py index 039c788c..79a6dac6 100644 --- a/devservices/commands/down.py +++ b/devservices/commands/down.py @@ -305,6 +305,14 @@ def _bring_down_dependency( return run_cmd(cmd.full_command, current_env) +def _stop_supervisor_program( + manager: SupervisorManager, program: str, status: Status +) -> None: + """Stop a single supervisor program.""" + status.info(f"Stopping {program}") + manager.stop_process(program) + + def bring_down_supervisor_programs( supervisor_programs: list[str], service: Service, status: Status ) -> None: @@ -318,9 +326,10 @@ def bring_down_supervisor_programs( service_name=service.name, ) - for program in supervisor_programs: - status.info(f"Stopping {program}") - manager.stop_process(program) - - status.info("Stopping supervisor daemon") - manager.stop_supervisor_daemon() + with concurrent.futures.ThreadPoolExecutor() as executor: + futures = [ + executor.submit(_stop_supervisor_program, manager, program, status) + for program in supervisor_programs + ] + for future in concurrent.futures.as_completed(futures): + _ = future.result() From 80706578baaa8b0f299753f5970cc85afd161180 Mon Sep 17 00:00:00 2001 From: Hubert Deng Date: Mon, 9 Jun 2025 15:14:20 -0700 Subject: [PATCH 3/3] add back stopping supervisor daemon --- devservices/commands/down.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devservices/commands/down.py b/devservices/commands/down.py index 79a6dac6..0d670e90 100644 --- a/devservices/commands/down.py +++ b/devservices/commands/down.py @@ -333,3 +333,6 @@ def bring_down_supervisor_programs( ] for future in concurrent.futures.as_completed(futures): _ = future.result() + + status.info("Stopping supervisor daemon") + manager.stop_supervisor_daemon()