Allow slaves to substantiate in parallel #2155
Closed
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.
BuildRequestDistributor's _maybeStartBuildsOnBuilder() method is
decorated with @defer.inlineCallbacks. This means that when it
uses "yield bldr.maybeStartBuild", the entire slave substantiation
process is sequentialized at that point.
slave substantiation can take considerable time, especially with
something like EC2 latent slaves. Even without anything substantial
happening in the cloud init (user-data) script, it can easily take
a couple of minutes. If any substantial configuration of the
OS takes place ins the user-data script, maybeStartBuild() can
easily take many minutes.
To enable parallel slave substantiation, we need to stop waiting on
bldr.maybeStartBuild() inline. Instead we move the error
handling code into a callback function that can be added to the
Deferred that is returned by bldr.maybeStartBuild().
At least for for the EC2LatentBuildSlave class, everything else down
the chain is properly event based and/or threaded. This small
code change allows slaves to substantiate in parallel.
Signed-off-by: Christopher J. Morrone morrone2@llnl.gov