I’ve been utilizing AWX Workflow features more lately. However, I’ve noticed one specific behavior that I’m not sure if it’s intended, or a bug, or maybe I’m just doing something wrong. As I was unable to find a good answer in the documentation I wanted to reach out here.
The issue is that jobs in second column will wait for all jobs in first column to finish, even if they are not linked. This slows the workflow significantly sometimes, and kills parallelization capabilities of Ansible.
I’m attaching the screenshot of the workflow as it’s much easier to explain.
Does anyone know if this is normal behavior? Is there a good reason for it?
I’m running AWX 3.0.0.0, with Ansible 2.7.6 on CentOS 7.
The design of workflows does not block based on what column a node is in. In the graph that you posted, the top-most node in the second column should be able to start before all the jobs from the first column are finished. The workflow should only block based on completion of its direct parents (which is only 1 there).
But that’s assuming that the only form of blocking is the workflow graph blocking. It’s very likely that you are using the same job template or the same inventory for multiple nodes in your workflow. By default, job templates will only run 1 at a time, unless you turn on allow_simultaneous. Inventory will also only allow 1 job to run against it at a time. A project can be used by multiple jobs at the same time, but can have some transient slowdown effects due to synchronization.
If, for instance, all your jobs used the same inventory, that would be very consistent with your report, because all the first column gets spawned and are now waiting to be ran before anything in the second column spawns.