From 8e9781401853c27ad94e0ef9ec73583448285adb Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Sun, 30 Jun 2024 00:39:10 +0800 Subject: [PATCH] fix: causing API to be pending when plugin startup encounters an error (#6207) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind improvement /area core /area plugin #### What this PR does / why we need it: 修复当启动插件遇到 Error 级别的错误时会导致 API 被挂起无法终止的问题 ``` - Throwable - Error - Exception ``` see #6192 for more details #### Which issue(s) this PR fixes: Fixes #6192 #### Does this PR introduce a user-facing change? ```release-note 修复当启动插件遇到 Error 级别的错误时会导致 API 被挂起无法终止的问题 ``` --- .../app/core/extension/reconciler/PluginReconciler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/run/halo/app/core/extension/reconciler/PluginReconciler.java b/application/src/main/java/run/halo/app/core/extension/reconciler/PluginReconciler.java index bff0f07a6..145c7df77 100644 --- a/application/src/main/java/run/halo/app/core/extension/reconciler/PluginReconciler.java +++ b/application/src/main/java/run/halo/app/core/extension/reconciler/PluginReconciler.java @@ -158,7 +158,7 @@ public class PluginReconciler implements Reconciler { } } return result; - } catch (Exception e) { + } catch (Throwable e) { status.getConditions().addAndEvictFIFO(Condition.builder() .type(ConditionType.READY) .status(ConditionStatus.FALSE) @@ -313,7 +313,7 @@ public class PluginReconciler implements Reconciler { Failed to start plugin %s(%s).\ """.formatted(pluginName, pluginState)); } - } catch (Exception e) { + } catch (Throwable e) { conditions.addAndEvictFIFO(Condition.builder() .type(ConditionType.READY) .status(ConditionStatus.FALSE) @@ -365,7 +365,7 @@ public class PluginReconciler implements Reconciler { } try { pluginManager.disablePlugin(pluginName); - } catch (Exception e) { + } catch (Throwable e) { conditions.addAndEvictFIFO(Condition.builder() .type(ConditionType.READY) .status(ConditionStatus.FALSE)