YAML Exec Concurrency
The settings.functions.exec section controls how many !exec expressions can run
at the same time during a document evaluation. Existing stack syntax stays unchanged.
Configuration
settings.functions.exec.max_concurrencyA positive integer. Defaults to
1, preserving serial execution. Set it above1to allow up to that many!execcalls to overlap during one document evaluation. Values below1are invalid.
Example
With a limit of 4, these three expressions can run concurrently:
vars:
network: !exec ./lookup-network
cluster: !exec ./lookup-cluster
registry: !exec ./lookup-registry
Each result is assigned to its original location, regardless of completion order. Existing output decoding still applies, including JSON objects and arrays. No new tag or grouping syntax is needed.
Atmos does not infer dependencies between shell commands. When enabling concurrency, you are responsible
for coordinating commands that share files or other external state. Set the limit to 1 when serial execution
is required.
Commands inherit Atmos standard input. Concurrent commands share that input stream; input is not broadcast
to every command, and which command reads each part is not guaranteed. Coordinate commands that read stdin,
or set the limit to 1 when they must read serially.
Cancellation stops outstanding execution. Errors identify the expression's location. Skipping function
processing or using --skip=exec continues to prevent the corresponding commands from running.
Related
!execsyntax and output decoding.settings.functionsconfiguration.