zuul/tests
Tobias Henkel 2b3a041e61
Don't call the merger for non-live items
When processing changes with dependencies in pipelines using the
independent pipeline manager we enqueue non-live items that represent
the dependent changes but don't run tests. Currently we perform a
merge operation also with every non-live item. Especially when
rebasing large stacks in Gerrit this can lead to a huge overhead of
merges. In this case we perform 1 + 2 + ... + n merges where n is the
size of the stack in Gerrit. E.g. a rebase of a stack of 20 changes we
perform 210 merge operations.

Those merges are needed to get the changed config of every item ahead
because we need the resulting config changes to produce a correct
layout. Fortunately the merger already returns a list of file changes
per item. We can leverage this to populate the changed files of all
non-live changes ahead when we receive the merge result of the live
change. This makes it possible to skip the merges of the non-live
changes ahead and have one merge operation per change.

In the rebase example above this optimization reduces the number of
performed merges from 210 to 20.

Change-Id: I82848367bd6f191ec5ae5822a1f438070cde14e1
2019-03-17 10:03:56 +01:00
..
fixtures Merge "Raise an error if pipeline is defined twice" 2019-03-15 20:21:35 +00:00
nodepool Set relative priority of node requests 2018-11-30 12:50:34 +01:00
remote Prevent local code execution via the raw module 2019-03-11 17:49:38 +01:00
unit Don't call the merger for non-live items 2019-03-17 10:03:56 +01:00
__init__.py Add non-voting jobs. 2012-08-23 23:20:09 +00:00
base.py Don't call the merger for non-live items 2019-03-17 10:03:56 +01:00
encrypt_secret.py Make tests' encrypt_secret.py work with python3 2017-10-19 18:09:57 +00:00
fakegithub.py Merge "Switch to LRU based sha to PR cache" 2019-02-19 18:51:37 +00:00
make_playbooks.py Use libyaml if possible 2017-04-04 11:49:05 -07:00
print_layout.py Do not add implied branch matchers in project-templates 2017-09-30 10:19:07 -07:00