Fix multi-node list with parallel mode#206
Merged
ahayworth merged 10 commits intogithub:masterfrom Oct 31, 2019
Merged
Conversation
added 6 commits
February 17, 2019 16:01
… wait your own pids not any child from the parent
…nto parallel_conflict_with_diffy
Author
|
merged in master branch to keep diffs limited to my code |
ahayworth
approved these changes
Oct 28, 2019
Contributor
ahayworth
left a comment
There was a problem hiding this comment.
Intriguing. We're not using this in --parallel mode internally (at least, not that I can find), so we haven't experienced this personally.. However, I think your fix looks good and I'll merge it in for 1-6-0 later this week!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
rakein your checkout directory, or review the CI job triggered whenever you push to a pull request.rake coverage:specor ignoring untestable sections of code with# :nocovcomments. If you need help getting to 100% coverage please ask; however, don't just submit code with no tests..gemfile into the vendor/cache directory./cc [related issues] [teams and individuals, making sure to mention why you're CC-ing them]