zuul/zuul
Tobias Henkel 4c972f00bd
Optimize canMerge using graphql
The canMerge check is executed whenever zuul tests if a change can
enter a gate pipeline. This is part of the critical path in the event
handling of the scheduler and therefore must be as fast as
possible. Currently this takes five requests for doing its work and
also transfers large amounts of data that is unneeded:

* get pull request
* get branch protection settings
* get commits
* get status of latest commit
* get check runs of latest commit

Especially when Github is busy this can slow down zuul's event
processing considerably. This can be optimized using graphql to only
query the data we need with a single request. This reduces requests
and load on Github and speeds up event processing in the scheduler.

Since this is the first usage of graphql this also sets up needed
testing infrastructure using graphene to mock the github api with real
test data.

Change-Id: I77be4f16cf7eb5c8035ce0312f792f4e8d4c3e10
2020-02-28 09:43:56 +01:00
..
ansible Adjust io-level logging in gerrit/git drivers 2020-02-13 13:25:44 -08:00
cmd Merge "Add foreground option" 2020-02-23 15:53:45 +00:00
connection Annotate some logs in the scheduler with event id 2019-05-17 06:06:11 +02:00
driver Optimize canMerge using graphql 2020-02-28 09:43:56 +01:00
execution_context Add wrapper driver execution context 2017-08-18 16:35:12 -07:00
executor Recover from broken process pool 2020-02-22 18:53:36 +01:00
lib Merge "gear: remove support for custom MASS_DO packet" 2020-02-19 16:12:10 +00:00
manager Don't report enqueue of non-live item 2020-02-12 14:00:14 -08:00
merger Offload repo reset to processes 2020-02-14 16:08:41 +01:00
reporter Add no-jobs reporter action 2019-09-17 09:51:16 -07:00
source Annotate canMerge check with event id 2019-07-12 12:34:57 +02:00
sphinx Add zuul-sphinx as a requirement 2017-08-07 14:56:17 -07:00
trigger Annotate logs in the zuul driver with event ids 2019-05-17 06:06:11 +02:00
web Merge "Add client_id to RPC client" 2020-02-15 21:13:26 +00:00
__init__.py Initial commit. 2012-05-29 14:49:32 -07:00
_setup_hook.py Revert "Create zuul/web/static on demand" 2019-06-04 09:57:04 -07:00
change_matcher.py Make files matcher match changes with no files 2019-08-23 18:59:29 +02:00
configloader.py Extract allow/disallow filter into util function 2020-02-06 15:59:59 -08:00
exceptions.py web: add tenant and project scoped, JWT-protected actions 2019-07-10 12:11:14 +02:00
model.py Clarify RequirementError message 2020-02-17 10:49:12 +01:00
nodepool.py Store a list of held nodes per held build in hold request 2019-10-24 13:39:16 -04:00
rpcclient.py Add client_id to RPC client 2020-01-28 10:16:19 +01:00
rpclistener.py Add disallowed-labels tenant option 2020-02-05 07:36:47 -08:00
scheduler.py Fix bogus error message on reconfigure event 2020-01-18 11:54:13 +01:00
version.py Report git sha in status page version 2018-04-27 10:21:43 -07:00
zk.py Sort autoholds by request ID 2019-12-09 15:16:43 -05:00