zuul/zuul/manager
Felix Edel fee46c25bc Lock/unlock nodes on executor server
Currently, the nodes are locked in the scheduler/pipeline manager before
the actual build is created in the executor client. When the nodes are
locked, the corresponding NodeRequest is also deleted.

With this change, the executor will lock the nodes directly before
starting the build and unlock them when the build is completed.

To keep the order of events intact, the nodepool.acceptNodes() method is
split up into two:
    1. nodepool.acceptNodeRequest() does most of the old acceptNodes()
       method except for locking the nodes and deleting the node
       request. It is called on the scheduler side when the
       NodesProvisionedEvent is handled (which is also where
       acceptNodes() was previously called).
    2. nodepool.acceptNodes() is now called on the executor side when
       the job is started. It locks the nodes and deletes the node
       request in ZooKeeper.

Finally, it's also necessary to move the autohold processing to the
executor, as this requires a lock on the node. To allow processing of
autoholds, the executor now also determines the build attempts and sets
the RETRY_LIMIT result if necessary.

Change-Id: I7392ce47e84dcfb8079c16e34e0ed2062ebf4136
2021-07-01 05:46:02 +00:00
..
__init__.py Lock/unlock nodes on executor server 2021-07-01 05:46:02 +00:00
dependent.py Check cycle items are mergeable before reporting 2021-03-01 18:45:29 +00:00
independent.py Add optional support for circular dependencies 2021-03-01 19:42:56 +01:00
serial.py Add serial pipeline manager 2020-04-29 14:59:15 -07:00
shared.py Move queue from pipeline to project 2021-02-03 13:04:20 +01:00
supercedent.py Support per branch change queues 2021-02-03 13:04:20 +01:00