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