-
I used to have one host (out of about 8) that got stuck during one of the steps (always the same one). So I would exclude moulti for that host. However, now I have two other hosts that used to work but now get stuck (always the same step for each of the hosts, although the steps are different between the hosts). On the remote host, when I try to see what's going on by running a sort of "ansible watch": while :; do clear; pstree -w -g 3 -s AnsiballZ_ | sed -n '/AnsiballZ/,$p'; sleep 2; done … I see that nothing's going on at the remote host that I can detect. Now, if I quit moulti with
If I run the Ansible playbooks without moulti, I have no such freezing problem. I'm trying to diagnose and collect more info about what could be going wrong. For each susceptible Ansible playbook, looking at the Ansible step that looks responsible for locking things up, I can't discern anything special about the step. They're very ordinary steps, e.g. am Any tips on how else I could diagnose this? Maybe run moulti in debugging mode? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 30 replies
-
Definitely sounds like a bug in Moulti. I may have overlooked something re: Ansible parallelism. It may also be an issue with the way Moulti reads data from Something that does not hurt and that you can try is setting Overall, that looks like a reproducible issue. Ideally, you should be able to turn your playbook into a minimal reproducible example that you could share without revealing anything relevant. I would also need your Beyond that, what to look at to diagnose what happens:
|
Beta Was this translation helpful? Give feedback.
-
Not that simple to reproduce: I gave it a first try using 10 VMs and dummy tasks (like copying a small text file or sleeping a random number of seconds): everything went smoothly.
|
Beta Was this translation helpful? Give feedback.
-
@huyz On my side, I recently stumbled upon a stuck Moulti instance. |
Beta Was this translation helpful? Give feedback.
Diagnosis
What happens?
Expected behaviour
When Moulti's Ansible plugin needs to add lines to an existing Moulti step, it runs a
moulti pass
command and pipes those lines to the standard input of the resulting child process.When a new step is to be created, the plugin closes this pipe and waits until the child process exits.
On the other end, the Moulti instance receives EOF and responds to the initial "pass" message by sending a simple reply (usually "done: True, error: None").
Upon reception of this reply,
moulti pass
exits, ending the plugin's wait.The plugin can then resume its activity.
Encountered behaviour
Same as the expected behaviour except that, at some point, the Moulti inst…