From 6205ed269f997f61112d2c97a9903af25d4bdd0e Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Wed, 24 Jan 2018 10:45:01 +0100 Subject: [PATCH] Fix self fulfilling empty node requests Emtpy node requests are intended to be fulfilled directly in zuul without bugging zk. However we didn't check for this condition in acceptNodes. This causes us to 'recreate' the missing empty node request on zk, let nodepool fulfill it and accept this afterwards. Fix this by short-circuiting acceptNodes if we have an empty and fulfilled node request. Change-Id: Ib953d366258e5724c85ae2a563e319422f4ada40 --- zuul/nodepool.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zuul/nodepool.py b/zuul/nodepool.py index 6e7064c93f..a546f9cdb7 100644 --- a/zuul/nodepool.py +++ b/zuul/nodepool.py @@ -210,6 +210,12 @@ class Nodepool(object): # The request was already deleted when it was canceled return False + # If we didn't request nodes and the request is fulfilled then just + # return. We don't have to do anything in this case. Further don't even + # ask ZK for the request as empty requests are not put into ZK. + if not request.nodeset.nodes and request.fulfilled: + return True + # Make sure the request still exists. It's possible it could have # disappeared if we lost the ZK session between when the fulfillment # response was added to our queue, and when we actually get around to