2b3a041e61
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 |
||
---|---|---|
.. | ||
fixtures | ||
nodepool | ||
remote | ||
unit | ||
__init__.py | ||
base.py | ||
encrypt_secret.py | ||
fakegithub.py | ||
make_playbooks.py | ||
print_layout.py |