From c7370284742f2ed5c136d0e5fcd08ca2d23c8fe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= Date: Tue, 14 Feb 2017 17:05:11 +0100 Subject: [PATCH] Fix change number extraction on new enough Gerrit master Apparently, there's been a change in recent upstream Gerrit which changed the JSON serialization of change numbers in the output of `gerrit stream-events`. Previously, the change number was being transmitted as a string. That has changed and now it's being sent as a number. That results in a failure later on: 2017-02-14 15:35:55,294 ERROR zuul.IndependentPipelineManager: Exception while launching job XXX for change : Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/zuul/scheduler.py", line 1520, in _launchJobs dependent_items) File "/usr/lib/python2.7/site-packages/zuul/launcher/gearman.py", line 318, in launch destination_path = os.path.join(item.change.getBasePath(), File "/usr/lib/python2.7/site-packages/zuul/model.py", line 913, in getBasePath self.number[-2:], self.number, self.patchset) TypeError: 'int' object has no attribute '__getitem__' I would love to have this extended this with a proper testcase. Please feel free to push an updated version over this patchset, or just let me know which place is the most appropriate and I can do it myself, too. Change-Id: I68f5fa7fa4fac0b4d2eb232fe37df11e57157ecf --- zuul/connection/gerrit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zuul/connection/gerrit.py b/zuul/connection/gerrit.py index 05d6534915..6e8d085104 100644 --- a/zuul/connection/gerrit.py +++ b/zuul/connection/gerrit.py @@ -63,7 +63,7 @@ class GerritEventConnector(threading.Thread): if change: event.project_name = change.get('project') event.branch = change.get('branch') - event.change_number = change.get('number') + event.change_number = str(change.get('number')) event.change_url = change.get('url') patchset = data.get('patchSet') if patchset: