From 284878ec5ab6e2fc83477290e620e903e4351b34 Mon Sep 17 00:00:00 2001 From: Harry Date: Mon, 12 Jan 2026 17:44:53 +0800 Subject: [PATCH] fix: handle exception in dynamic select options when trigger is not registered When using dynamic select options in tools/models, the plugin executor tries to get a trigger event handler even if no trigger is registered. This caused an unhandled exception that broke the dynamic select functionality. Added try-except block to get_trigger_event_handler_safely() to catch and log any exceptions, returning None instead of propagating the error. --- python/dify_plugin/core/trigger_factory.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/python/dify_plugin/core/trigger_factory.py b/python/dify_plugin/core/trigger_factory.py index fee1a829..09a9edf3 100644 --- a/python/dify_plugin/core/trigger_factory.py +++ b/python/dify_plugin/core/trigger_factory.py @@ -140,11 +140,15 @@ def get_subscription_constructor_cls(self, provider_name: str) -> type[TriggerSu # ------------------------------------------------------------------ def get_trigger_event_handler_safely(self, provider_name: str, event: str, runtime: EventRuntime) -> Event | None: - entry = self._get_entry(provider_name) - if event not in entry.events: + try: + entry = self._get_entry(provider_name) + if event not in entry.events: + return None + _, event_cls = entry.events[event] + return event_cls(runtime) + except Exception as e: + print(f"Error getting trigger event handler: {e!s}") return None - _, event_cls = entry.events[event] - return event_cls(runtime) def get_trigger_event_handler(self, provider_name: str, event: str, runtime: EventRuntime) -> Event: """Instantiate an event for the given provider and event name."""