From de884cd6814a00bc94474dbff19f5ee38965d5c9 Mon Sep 17 00:00:00 2001 From: Aurora Lahtela <24460436+AuroraLS3@users.noreply.github.com> Date: Tue, 18 Apr 2023 19:14:12 +0300 Subject: [PATCH] Improve Extension error handling --- .../providers/gathering/DataValueGatherer.java | 9 ++++++--- .../plan/extension/implementation/ExtensionRegister.java | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DataValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DataValueGatherer.java index 4903642fa..c1a88c588 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DataValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DataValueGatherer.java @@ -157,7 +157,7 @@ public class DataValueGatherer { addValuesToBuilder2(dataBuilder, methods, parameters); } -// TODO refactor to reduce cyclomatic complexity of the calling method + // TODO refactor to reduce cyclomatic complexity of the calling method private void addValuesToBuilder2(ExtensionDataBuilder dataBuilder, ExtensionMethods methods, Parameters parameters) { for (ExtensionMethod provider : methods.getDataBuilderProviders()) { if (brokenMethods.contains(provider)) continue; @@ -408,7 +408,10 @@ public class DataValueGatherer { .ifPresent(data -> storeTable(parameters, conditions, data)); } catch (DataExtensionMethodCallException methodError) { logFailure(methodError); - } catch (Exception | NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError unexpectedError) { + } catch (RejectedExecutionException ignore) { + // Processing or Database has shut down, which can be ignored + } catch (Exception | ExceptionInInitializerError | NoClassDefFoundError | NoSuchFieldError | + NoSuchMethodError unexpectedError) { logFailure(unexpectedError); } } @@ -584,7 +587,7 @@ public class DataValueGatherer { private void storePlayerComponent(Parameters parameters, Conditions conditions, ComponentDataValue data) { ProviderInformation information = data.getInformation(); - String value = getComponentAsJson(getValue(conditions, data, information)) ; + String value = getComponentAsJson(getValue(conditions, data, information)); if (value == null) return; Database db = dbSystem.getDatabase(); diff --git a/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java b/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java index bccf12a0f..06fa3927f 100644 --- a/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java +++ b/Plan/extensions/src/main/java/com/djrapitops/plan/extension/implementation/ExtensionRegister.java @@ -198,7 +198,7 @@ public class ExtensionRegister { createExtension.apply(factory).ifPresent(this::register); } catch (NotReadyException | UnsupportedOperationException ignore) { // This exception signals that the extension can not be registered right now (Intended fail). - } catch (Exception | NoClassDefFoundError | IncompatibleClassChangeError e) { + } catch (Exception | ExceptionInInitializerError | NoClassDefFoundError | IncompatibleClassChangeError e) { // Places all exceptions to one exception with plugin information so that they can be reported. suppressException(factory.getClass(), e); } @@ -213,7 +213,7 @@ public class ExtensionRegister { createExtension.apply(factory).forEach(this::register); } catch (NotReadyException | UnsupportedOperationException ignore) { // This exception signals that the extension can not be registered right now (Intended fail). - } catch (Exception | NoClassDefFoundError | IncompatibleClassChangeError e) { + } catch (Exception | ExceptionInInitializerError | NoClassDefFoundError | IncompatibleClassChangeError e) { // Places all exceptions to one exception with plugin information so that they can be reported. suppressException(factory.getClass(), e); }