Merge "Delete nodeset requests for canceled jobs"
This commit is contained in:
@ -512,6 +512,26 @@ class TestLauncher(LauncherBaseTestCase):
|
||||
'zuul.nodes.state.requested',
|
||||
kind='g')
|
||||
|
||||
@simple_layout('layouts/nodepool.yaml', enable_nodepool=True)
|
||||
def test_canceled_request(self):
|
||||
# Test that a canceled request is cleaned up
|
||||
self.hold_jobs_in_queue = True
|
||||
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
|
||||
A.addApproval('Code-Review', 2)
|
||||
self.fake_gerrit.addEvent(A.addApproval('Approved', 1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
queue = list(self.executor_api.queued())
|
||||
self.assertEqual(len(self.builds), 0)
|
||||
self.assertEqual(len(queue), 1)
|
||||
|
||||
self.fake_gerrit.addEvent(A.getChangeAbandonedEvent())
|
||||
|
||||
self.waitUntilSettled()
|
||||
self.assertHistory([])
|
||||
reqs = self.launcher.api.getNodesetRequests()
|
||||
self.assertEqual(0, len(reqs))
|
||||
|
||||
@simple_layout('layouts/nodepool-empty-nodeset.yaml', enable_nodepool=True)
|
||||
def test_empty_nodeset(self):
|
||||
self.executor_server.hold_jobs_in_build = True
|
||||
|
@ -3186,10 +3186,12 @@ class Scheduler(threading.Thread):
|
||||
# Cancel node request if needed
|
||||
req_id = buildset.getJobNodeRequestID(job)
|
||||
if req_id:
|
||||
if not isinstance(req_id, dict):
|
||||
req = self.nodepool.zk_nodepool.getNodeRequest(req_id)
|
||||
if req:
|
||||
if self.nodepool.isNodeRequestID(req_id):
|
||||
if req := self.nodepool.zk_nodepool.getNodeRequest(req_id):
|
||||
self.nodepool.cancelRequest(req)
|
||||
else:
|
||||
if req := self.launcher.getRequest(req_id):
|
||||
self.launcher.deleteRequest(req)
|
||||
|
||||
# Make sure we always remove the node request from the buildset
|
||||
# (empty request don't have an ID).
|
||||
|
Reference in New Issue
Block a user