Ignore exceptions when processing trigger events

Instead of aborting pipeline processing when there is an exception
processing a trigger event, we'll just log the error and continue.

This can e.g. happen with a depends-on line that references a change
that doesn't exist.

ERROR zuul.Scheduler: Exception processing pipeline check in tenant foobar
Traceback (most recent call last):
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/scheduler.py"", line 2394, in process_pipelines
    refreshed = self._process_pipeline(
        tenant, tenant_lock, manager)
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/scheduler.py"", line 2493, in _process_pipeline
    self.process_pipeline_trigger_queue(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        tenant, tenant_lock, manager)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/scheduler.py"", line 2747, in process_pipeline_trigger_queue
    self._process_trigger_event(tenant, manager, event)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/scheduler.py"", line 2784, in _process_trigger_event
    manager.addChange(change, event, debug=match_info.debug)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/manager/__init__.py"", line 712, in addChange
    self.getDependencyGraph(change, dependency_graph, event,
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                            update_deps=True)
                            ^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/manager/__init__.py"", line 980, in getDependencyGraph
    self.getDependencyGraph(needed_change,
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
                            dependency_graph, event,
                            ^^^^^^^^^^^^^^^^^^^^^^^^
                            update_deps,
                            ^^^^^^^^^^^^
                            history, quiet, indent + '  ')
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/manager/__init__.py"", line 953, in getDependencyGraph
    self.updateCommitDependencies(change, event)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/manager/__init__.py"", line 1162, in updateCommitDependencies
    dep = source.getChangeByURLWithRetry(match, event)
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/source/__init__.py"", line 103, in getChangeByURLWithRetry
    return self.getChangeByURL(url, event)
           ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/driver/github/githubsource.py"", line 114, in getChangeByURL
    pull, pr_obj = self.connection.getPull(
                   ~~~~~~~~~~~~~~~~~~~~~~~^
        '%s/%s' % (org, proj), int(num), event=event)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""/opt/zuul/lib/python3.13/site-packages/zuul/driver/github/githubconnection.py"", line 1952, in getPull
    raise Exception(""Failed to get pull request #%s of %s/%s"" % (
        number, owner, proj))
Exception: Failed to get pull request #1234 of org/project

Change-Id: I82eeb2452e1a369764b185958799c49770c04735
This commit is contained in:
Simon Westphahl
2026-06-22 16:00:40 +02:00
parent c3f93827c3
commit d6c515bb52
+2
View File
@@ -2737,6 +2737,8 @@ class Scheduler(threading.Thread):
self._doSupercedeEvent(event)
else:
self._process_trigger_event(tenant, manager, event)
except Exception:
log.exception("Failed to process trigger event %s", event)
finally:
self.pipeline_trigger_events[tenant.name][
manager.pipeline.name