Fix multi-node list with parallel mode #206
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This pull request fixes erroneously waited pids inside the OctocatalogDiff::Util::Parallel.run_tasks_parallel method.
I was testing parallel runs with a comma separated list of hosts in the -n option. It consistently failed if I ran without the --no-parallel flag with the following error:
breaks with multiple hosts with --parallel
works with --no-parallel
with fix (explicitly with --parallel)
I tracked it down to the fact that the usage of Process.wait(0) will reap any completed child in the context of the main ppid. Diffy apparently forks its differs and expects the child pids to be available to wait.
I thought that I had a good test in the parallel_rspec.rb file but I cant get it to work. The code however fixes all of my issues. If anybody is interested in taking a look at the tests and suggesting a better way, I would be grateful.
Checklist
rake
in your checkout directory, or review the CI job triggered whenever you push to a pull request.rake coverage:spec
or ignoring untestable sections of code with# :nocov
comments. If you need help getting to 100% coverage please ask; however, don't just submit code with no tests..gem
file into the vendor/cache directory./cc [related issues] [teams and individuals, making sure to mention why you're CC-ing them]