You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2023/02/22 17:35:25 UTC

[camel] 02/03: CAMEL-18988: Release the instances of DefaultCamelContext

This is an automated email from the ASF dual-hosted git repository.

nfilotto pushed a commit to branch CAMEL-18988/fix-leaks
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b28d3198657b31baad9a5d8ba0eaa0697621a8b3
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Wed Feb 22 14:25:50 2023 +0100

    CAMEL-18988: Release the instances of DefaultCamelContext
---
 .../java/org/apache/camel/builder/ExchangeBuilderTest.java | 14 +++++++++++++-
 .../org/apache/camel/catalog/RuntimeCamelCatalogTest.java  |  6 ++++++
 .../org/apache/camel/component/log/LogEndpointTest.java    |  6 ++++++
 .../camel/impl/CamelProduceInterfaceEventNotifierTest.java |  2 +-
 .../camel/impl/event/CamelEventsTimestampEnabledTest.java  | 10 +---------
 .../apache/camel/impl/event/EventNotifierEventsTest.java   |  3 +--
 .../impl/event/EventNotifierExchangeCompletedTest.java     | 10 +---------
 .../camel/impl/event/EventNotifierExchangeSentTest.java    |  2 +-
 .../impl/event/EventNotifierFailureHandledEventsTest.java  | 10 +---------
 .../EventNotifierIgnoreCamelContextInitEventsTest.java     |  3 +--
 .../impl/event/EventNotifierRedeliveryEventsTest.java      | 10 +---------
 .../event/EventNotifierServiceStoppingFailedEventTest.java | 10 +---------
 .../camel/impl/event/MultipleEventNotifierEventsTest.java  | 13 ++-----------
 .../camel/impl/event/SimpleEventNotifierEventsTest.java    |  3 +--
 .../java/org/apache/camel/processor/NavigateRouteTest.java |  2 +-
 .../camel/throttling/ThrottlingExceptionRoutePolicy.java   |  9 +++++++++
 16 files changed, 47 insertions(+), 66 deletions(-)

diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ExchangeBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ExchangeBuilderTest.java
index a60d63296a6..ead07e64d03 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ExchangeBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ExchangeBuilderTest.java
@@ -21,18 +21,30 @@ import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.support.DefaultExchange;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class ExchangeBuilderTest {
-    private static final CamelContext CONTEXT = new DefaultCamelContext();
+    private static CamelContext CONTEXT;
     private static final String BODY = "Message Body";
     private static final String KEY = "Header key";
     private static final String VALUE = "Header value";
     private static final String PROPERTY_KEY = "Property key";
     private static final String PROPERTY_VALUE = "Property value";
 
+    @BeforeAll
+    public static void init() {
+        CONTEXT = new DefaultCamelContext();
+    }
+
+    @AfterAll
+    public static void destroy() {
+        CONTEXT = null;
+    }
+
     @Test
     public void testBuildAnExchangeWithDefaultPattern() {
         Exchange exchange = new DefaultExchange(CONTEXT);
diff --git a/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
index dc3f79fc9dc..bffba9d194c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/catalog/RuntimeCamelCatalogTest.java
@@ -23,6 +23,7 @@ import java.util.Objects;
 import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.tooling.model.ComponentModel;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
@@ -40,6 +41,11 @@ public class RuntimeCamelCatalogTest {
         catalog.setCamelContext(new DefaultCamelContext());
     }
 
+    @AfterAll
+    public static void cleanCamelCatalog() {
+        catalog = null;
+    }
+
     @Test
     public void testAsEndpointUriMapFile() throws Exception {
         Map<String, String> map = new HashMap<>();
diff --git a/core/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java b/core/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java
index 4000fe7664d..57f6dfc30fc 100644
--- a/core/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/component/log/LogEndpointTest.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.LogListener;
 import org.apache.camel.support.processor.CamelLogProcessor;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -36,6 +37,11 @@ public class LogEndpointTest extends ContextTestSupport {
 
     private static Exchange logged;
 
+    @AfterAll
+    public static void clean() {
+        logged = null;
+    }
+
     private static class MyLogger extends CamelLogProcessor {
 
         @Override
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/CamelProduceInterfaceEventNotifierTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/CamelProduceInterfaceEventNotifierTest.java
index 40a968e2117..0c2a21dcf73 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/CamelProduceInterfaceEventNotifierTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/CamelProduceInterfaceEventNotifierTest.java
@@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class CamelProduceInterfaceEventNotifierTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
     private CamelBeanPostProcessor postProcessor;
 
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/CamelEventsTimestampEnabledTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/CamelEventsTimestampEnabledTest.java
index 248bc571327..a4cd3933cf7 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/CamelEventsTimestampEnabledTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/CamelEventsTimestampEnabledTest.java
@@ -27,19 +27,11 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
 import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 public class CamelEventsTimestampEnabledTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        super.setUp();
-    }
+    private final List<CamelEvent> events = new ArrayList<>();
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
index 616f17850a7..7cea0af763b 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierEventsTest.java
@@ -36,14 +36,13 @@ import static org.junit.jupiter.api.Assertions.*;
 
 public class EventNotifierEventsTest {
 
-    private static List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
     private CamelContext context;
     private ProducerTemplate template;
 
     @BeforeEach
     public void setUp() throws Exception {
-        events.clear();
         context = createCamelContext();
         context.addRoutes(createRouteBuilder());
         template = context.createProducerTemplate();
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
index 8197969e0cf..e43d1adf263 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeCompletedTest.java
@@ -26,21 +26,13 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 public class EventNotifierExchangeCompletedTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        super.setUp();
-    }
+    private final List<CamelEvent> events = new ArrayList<>();
 
     @Override
     protected CamelContext createCamelContext() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
index 3091692e740..223476d26b0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierExchangeSentTest.java
@@ -35,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class EventNotifierExchangeSentTest extends ContextTestSupport {
 
-    protected List<CamelEvent> events = new ArrayList<>();
+    protected final List<CamelEvent> events = new ArrayList<>();
 
     @BeforeEach
     public void clearEvents() throws Exception {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
index 4daa4956d97..c35553dbef3 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierFailureHandledEventsTest.java
@@ -28,21 +28,13 @@ import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.processor.SendProcessor;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 public class EventNotifierFailureHandledEventsTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        super.setUp();
-    }
+    private final List<CamelEvent> events = new ArrayList<>();
 
     @Override
     public boolean isUseRouteBuilder() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierIgnoreCamelContextInitEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierIgnoreCamelContextInitEventsTest.java
index f04ab8cf1d0..1cd8f1b98e9 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierIgnoreCamelContextInitEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierIgnoreCamelContextInitEventsTest.java
@@ -34,14 +34,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class EventNotifierIgnoreCamelContextInitEventsTest {
 
-    private static List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
     private CamelContext context;
     private ProducerTemplate template;
 
     @BeforeEach
     public void setUp() throws Exception {
-        events.clear();
         context = createCamelContext();
         context.addRoutes(createRouteBuilder());
         template = context.createProducerTemplate();
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
index 877664bdfd2..f6107dd1d46 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierRedeliveryEventsTest.java
@@ -25,7 +25,6 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -33,14 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class EventNotifierRedeliveryEventsTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
-
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        super.setUp();
-    }
+    private final List<CamelEvent> events = new ArrayList<>();
 
     @Override
     public boolean isUseRouteBuilder() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
index 14948b5b784..5298b9aa174 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/EventNotifierServiceStoppingFailedEventTest.java
@@ -24,23 +24,15 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Service;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class EventNotifierServiceStoppingFailedEventTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
     private static String stopOrder;
 
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        super.setUp();
-    }
-
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
index b53eaf830d1..7ad5f8cc34d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/MultipleEventNotifierEventsTest.java
@@ -25,7 +25,6 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.EventNotifierSupport;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -33,22 +32,14 @@ import static org.junit.jupiter.api.Assertions.fail;
 
 public class MultipleEventNotifierEventsTest extends ContextTestSupport {
 
-    private static List<CamelEvent> events = new ArrayList<>();
-    private static List<CamelEvent> events2 = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events2 = new ArrayList<>();
 
     @Override
     protected boolean useJmx() {
         return true;
     }
 
-    @Override
-    @BeforeEach
-    public void setUp() throws Exception {
-        events.clear();
-        events2.clear();
-        super.setUp();
-    }
-
     @Override
     protected CamelContext createCamelContext() throws Exception {
         DefaultCamelContext context = new DefaultCamelContext(createRegistry());
diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/event/SimpleEventNotifierEventsTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/event/SimpleEventNotifierEventsTest.java
index ce174d386ba..14dd994018a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/impl/event/SimpleEventNotifierEventsTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/impl/event/SimpleEventNotifierEventsTest.java
@@ -36,14 +36,13 @@ import static org.junit.jupiter.api.Assertions.*;
 
 public class SimpleEventNotifierEventsTest {
 
-    private static List<CamelEvent> events = new ArrayList<>();
+    private final List<CamelEvent> events = new ArrayList<>();
 
     private CamelContext context;
     private ProducerTemplate template;
 
     @BeforeEach
     public void setUp() throws Exception {
-        events.clear();
         context = createCamelContext();
         context.addRoutes(createRouteBuilder());
         template = context.createProducerTemplate();
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/NavigateRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/NavigateRouteTest.java
index 9adc2638950..417c9026a10 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/NavigateRouteTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/NavigateRouteTest.java
@@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
  */
 public class NavigateRouteTest extends ContextTestSupport {
 
-    private static List<Processor> processors = new ArrayList<>();
+    private final List<Processor> processors = new ArrayList<>();
 
     @Test
     public void testNavigateRoute() throws Exception {
diff --git a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
index fc6a312d48b..94a59b00fb6 100644
--- a/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
+++ b/core/camel-support/src/main/java/org/apache/camel/throttling/ThrottlingExceptionRoutePolicy.java
@@ -114,6 +114,15 @@ public class ThrottlingExceptionRoutePolicy extends RoutePolicySupport implement
         }
     }
 
+    @Override
+    protected void doStop() throws Exception {
+        Timer timer = halfOpenTimer;
+        if (timer != null) {
+            timer.cancel();
+            halfOpenTimer = null;
+        }
+    }
+
     @Override
     public void onExchangeDone(Route route, Exchange exchange) {
         if (keepOpen.get()) {