From dc39a34f7feedd269b692c305383e80bf25e2d64 Mon Sep 17 00:00:00 2001 From: Tobias Henkel Date: Thu, 25 Feb 2021 23:15:28 +0100 Subject: [PATCH] Catch exception when double unregistering merge jobs Currently double pause fails with an exception [1]. This causes the executor not to terminate when using 'zuul-executor graceful' if the executor is already paused or governed. This can be fixed by catching the KeyError since we can safely ignore this error. [1] Trace: ERROR zuul.ExecutorServer: Exception while processing command Traceback (most recent call last): File "/opt/zuul/lib/python3.8/site-packages/zuul/executor/server.py", line 2898, in runCommand self.command_map[command]() File "/opt/zuul/lib/python3.8/site-packages/zuul/executor/server.py", line 2859, in graceful self.pause() File "/opt/zuul/lib/python3.8/site-packages/zuul/executor/server.py", line 2847, in pause super().pause() File "/opt/zuul/lib/python3.8/site-packages/zuul/merger/server.py", line 136, in pause self.merger_gearworker.unregister() File "/opt/zuul/lib/python3.8/site-packages/zuul/lib/gearworker.py", line 67, in unregister self.gearman.unRegisterFunction(job) File "/opt/zuul/lib/python3.8/site-packages/gear/__init__.py", line 1941, in unRegisterFunction del self.functions[name] KeyError: b'merger:merge' Change-Id: I4b1ce8b51087f84dccdf33c7ee364941368e3b8b --- zuul/lib/gearworker.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zuul/lib/gearworker.py b/zuul/lib/gearworker.py index 1e14336928..4add1bb593 100644 --- a/zuul/lib/gearworker.py +++ b/zuul/lib/gearworker.py @@ -64,7 +64,10 @@ class ZuulGearWorker: def unregister(self): self.log.debug('Unregistering all jobs (%s)' % len(self.jobs)) for job in self.jobs: - self.gearman.unRegisterFunction(job) + try: + self.gearman.unRegisterFunction(job) + except KeyError: + self.log.debug("Job %s already unregistered", job) def stop(self): self._running = False