Skip to content

execute_command_parallel has no ignore_errors param #441

Description

@milindsrivastava1997

`InfrastructureProvider.execute_command_parallel` (`providers/base.py`) has no `ignore_errors` parameter, unlike `execute_command`. `CloudLabProvider`'s implementation never surfaces remote failures here anyway (`utils.run_on_cloudlab_nodes_in_parallel` calls `.wait()` on each SSH `Popen` without checking the return code), so callers like `DeathstarService.stop()` / `FlinkService.stop_all_jobs()` rely on this being implicitly always-ignore — they call `.stop()` unconditionally as best-effort teardown regardless of whether that component was ever used in the run.

`LocalProvider.execute_command`'s `popen=True` branch (#424) currently swallows `OSError` (e.g. missing `cmd_dir`) unconditionally to match that implicit behavior, since there's no parameter to gate it on. Once this is fixed, that swallow should become conditional on the new `ignore_errors` parameter (mirroring the `popen=False` branch) instead of always-on.

Add `ignore_errors: bool = False` to `execute_command_parallel`'s signature, wire it through `CloudLabProvider`/`LocalProvider`/`CloudLabLocalProvider`, and update `LocalProvider.execute_command`'s `popen=True` exception handling to respect it.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions