From 5149927195ec9f4b28ae56e86333cb90fb9ac4b0 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 20 Sep 2023 17:36:34 +0200 Subject: [PATCH] Avoid IllegalStateExceptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The DefaultNamespaceManager has not been a singleton. Because of this, instances could be removed before the event has been handled completely and therefore the handler could no longer be removed from the queue, resulting in an IllegalStateException. By making the manager a singleton, it is no longer garbage collected and therefore we do not get the exception any longer. Committed-by: Eduard Heimbuch Co-authored-by: René Pfeuffer --- gradle/changelog/eventbus_exceptions.yaml | 2 ++ gradle/dependencies.gradle | 2 +- .../main/java/sonia/scm/repository/DefaultNamespaceManager.java | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 gradle/changelog/eventbus_exceptions.yaml diff --git a/gradle/changelog/eventbus_exceptions.yaml b/gradle/changelog/eventbus_exceptions.yaml new file mode 100644 index 0000000000..d7f9bb00fc --- /dev/null +++ b/gradle/changelog/eventbus_exceptions.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Numerous IllegalArgumentExceptions and ConcurrentModificationExceptoins in log file diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index e70b293880..360a8944fd 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -5,7 +5,7 @@ ext { jacksonVersion = '2.13.4' - legmanVersion = '2.0.0' + legmanVersion = '2.0.1' mapstructVersion = '1.3.1.Final' jaxbVersion = '2.3.3' diff --git a/scm-webapp/src/main/java/sonia/scm/repository/DefaultNamespaceManager.java b/scm-webapp/src/main/java/sonia/scm/repository/DefaultNamespaceManager.java index c291cfa97e..99c1d5609d 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/DefaultNamespaceManager.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/DefaultNamespaceManager.java @@ -29,6 +29,7 @@ import sonia.scm.HandlerEventType; import sonia.scm.event.ScmEventBus; import javax.inject.Inject; +import javax.inject.Singleton; import java.util.Collection; import java.util.Optional; import java.util.stream.Collectors; @@ -36,6 +37,7 @@ import java.util.stream.Collectors; import static sonia.scm.ContextEntry.ContextBuilder.entity; import static sonia.scm.NotFoundException.notFound; +@Singleton public class DefaultNamespaceManager implements NamespaceManager { private final RepositoryManager repositoryManager;