You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/02/27 16:00:41 UTC

[camel] 01/03: CAMEL-19091: camel-core - Remove Discard and DiscardOldest from thread pool policy

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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 676b282ba90556211096e05a200b19c2ad0c0c34
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Feb 27 14:46:19 2023 +0100

    CAMEL-19091: camel-core - Remove Discard and DiscardOldest from thread pool policy
---
 .../org/apache/camel/model/threadPoolProfile.json  |  2 +-
 .../resources/org/apache/camel/model/threads.json  |  2 +-
 .../camel/model/ThreadPoolProfileDefinition.java   |  2 +-
 .../org/apache/camel/model/ThreadsDefinition.java  |  2 +-
 .../apache/camel/processor/ThreadsProcessor.java   |  5 --
 .../xml/AbstractCamelThreadPoolFactoryBean.java    |  2 +-
 .../apache/camel/ThreadPoolRejectedPolicyTest.java | 80 ----------------------
 .../camel/builder/ThreadPoolBuilderTest.java       |  2 +-
 .../processor/ThreadsRejectedExecutionTest.java    | 52 --------------
 .../camel/processor/ThreadsRejectedPolicyTest.java |  6 +-
 .../org/apache/camel/main/MainThreadPoolTest.java  | 12 ++--
 .../RejectableScheduledThreadPoolExecutor.java     |  6 +-
 .../concurrent/RejectableThreadPoolExecutor.java   |  6 +-
 .../util/concurrent/ThreadPoolRejectedPolicy.java  | 40 +----------
 14 files changed, 23 insertions(+), 196 deletions(-)

diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/threadPoolProfile.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/threadPoolProfile.json
index bd152966a3c..0812212fc46 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/threadPoolProfile.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/threadPoolProfile.json
@@ -19,7 +19,7 @@
     "timeUnit": { "kind": "attribute", "displayName": "Time Unit", "label": "advanced", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the time unit to use for keep alive time By default SECONDS is used." },
     "maxQueueSize": { "kind": "attribute", "displayName": "Max Queue Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue" },
     "allowCoreThreadTimeOut": { "kind": "attribute", "displayName": "Allow Core Thread Time Out", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether idle core threads is allowed to timeout and therefore can shrink the pool size below the core pool size Is by default true" },
-    "rejectedPolicy": { "kind": "attribute", "displayName": "Rejected Policy", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy", "enum": [ "Abort", "CallerRuns", "DiscardOldest", "Discard" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the handler for tasks which cannot be executed by the thread pool." },
+    "rejectedPolicy": { "kind": "attribute", "displayName": "Rejected Policy", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy", "enum": [ "Abort", "CallerRuns" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the handler for tasks which cannot be executed by the thread pool." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/threads.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/threads.json
index a12547a1a84..c1699e236d3 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/threads.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/threads.json
@@ -20,7 +20,7 @@
     "maxQueueSize": { "kind": "attribute", "displayName": "Max Queue Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue" },
     "allowCoreThreadTimeOut": { "kind": "attribute", "displayName": "Allow Core Thread Time Out", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size Is by default false" },
     "threadName": { "kind": "attribute", "displayName": "Thread Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "Threads", "description": "Sets the thread name to use." },
-    "rejectedPolicy": { "kind": "attribute", "displayName": "Rejected Policy", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy", "enum": [ "Abort", "CallerRuns", "DiscardOldest", "Discard" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the handler for tasks which cannot be executed by the thread pool." },
+    "rejectedPolicy": { "kind": "attribute", "displayName": "Rejected Policy", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy", "enum": [ "Abort", "CallerRuns" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the handler for tasks which cannot be executed by the thread pool." },
     "callerRunsWhenRejected": { "kind": "attribute", "displayName": "Caller Runs When Rejected", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "description": "Whether or not to use as caller runs as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread  [...]
     "disabled": { "kind": "attribute", "displayName": "Disabled", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
index d3c4349f1bf..50533e929ee 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java
@@ -58,7 +58,7 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th
     private String allowCoreThreadTimeOut;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy",
-              enums = "Abort,CallerRuns,DiscardOldest,Discard")
+              enums = "Abort,CallerRuns")
     private String rejectedPolicy;
 
     public ThreadPoolProfileDefinition() {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadsDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadsDefinition.java
index d4eaba871e6..075708c59c0 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadsDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/ThreadsDefinition.java
@@ -67,7 +67,7 @@ public class ThreadsDefinition extends NoOutputDefinition<ThreadsDefinition>
     private String threadName;
     @XmlAttribute
     @Metadata(label = "advanced", javaType = "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy",
-              enums = "Abort,CallerRuns,DiscardOldest,Discard")
+              enums = "Abort,CallerRuns")
     private String rejectedPolicy;
     @XmlAttribute
     @Metadata(label = "advanced", defaultValue = "true")
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/ThreadsProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
index c97b5a50ad2..ecfc7d9d6d1 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/ThreadsProcessor.java
@@ -46,11 +46,6 @@ import org.slf4j.LoggerFactory;
  * <li>Abort - The current exchange will be set with a {@link RejectedExecutionException} exception, and marked to stop
  * continue routing. The {@link org.apache.camel.spi.UnitOfWork} will be regarded as <b>failed</b>, due the
  * exception.</li>
- * <li>Discard - The current exchange will be marked to stop continue routing (notice no exception is set). The
- * {@link org.apache.camel.spi.UnitOfWork} will be regarded as <b>successful</b>, due no exception being set.</li>
- * <li>DiscardOldest - The oldest exchange will be marked to stop continue routing (notice no exception is set). The
- * {@link org.apache.camel.spi.UnitOfWork} will be regarded as <b>successful</b>, due no exception being set. And the
- * current exchange will be added to the task queue.</li>
  * <li>CallerRuns - The current exchange will be processed by the current thread. Which mean the current thread will not
  * be free to process a new exchange, as its processing the current exchange.</li>
  * </ul>
diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
index f3dfe6b17f0..4b73caaa1ab 100644
--- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
+++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
@@ -58,7 +58,7 @@ public abstract class AbstractCamelThreadPoolFactoryBean extends AbstractCamelFa
     @XmlAttribute
     @Metadata(description = "Sets the handler for tasks which cannot be executed by the thread pool.",
               defaultValue = "CallerRuns", javaType = "org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy",
-              enums = "Abort,CallerRuns,DiscardOldest,Discard")
+              enums = "Abort,CallerRuns")
     private String rejectedPolicy = ThreadPoolRejectedPolicy.CallerRuns.name();
     @XmlAttribute(required = true)
     @Metadata(description = "To use a custom thread name / pattern")
diff --git a/core/camel-core/src/test/java/org/apache/camel/ThreadPoolRejectedPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/ThreadPoolRejectedPolicyTest.java
index 6a67c3a16e9..c55178355a0 100644
--- a/core/camel-core/src/test/java/org/apache/camel/ThreadPoolRejectedPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/ThreadPoolRejectedPolicyTest.java
@@ -122,86 +122,6 @@ public class ThreadPoolRejectedPolicyTest extends TestSupport {
         assertInvoked(task3, result3);
     }
 
-    @Test
-    public void testDiscardAsRejectedExecutionHandler() throws InterruptedException {
-
-        final ExecutorService executorService
-                = createTestExecutorService(ThreadPoolRejectedPolicy.Discard.asRejectedExecutionHandler());
-
-        final MockRunnable task1 = new MockRunnable();
-        final Future<?> result1 = executorService.submit(task1);
-        final MockRunnable task2 = new MockRunnable();
-        final Future<?> result2 = executorService.submit(task2);
-        final MockRunnable task3 = new MockRunnable();
-        final Future<?> result3 = executorService.submit(task3);
-
-        shutdownAndAwait(executorService);
-
-        assertInvoked(task1, result1);
-        assertInvoked(task2, result2);
-        assertRejected(task3, result3);
-    }
-
-    @Test
-    public void testDiscardAsRejectedExecutionHandlerWithRejectableTasks() throws InterruptedException {
-
-        final ExecutorService executorService
-                = createTestExecutorService(ThreadPoolRejectedPolicy.Discard.asRejectedExecutionHandler());
-
-        final MockRejectableRunnable task1 = new MockRejectableRunnable();
-        final Future<?> result1 = executorService.submit(task1);
-        final MockRejectableRunnable task2 = new MockRejectableRunnable();
-        final Future<?> result2 = executorService.submit(task2);
-        final MockRejectableRunnable task3 = new MockRejectableRunnable();
-        final Future<?> result3 = executorService.submit(task3);
-
-        shutdownAndAwait(executorService);
-
-        assertInvoked(task1, result1);
-        assertInvoked(task2, result2);
-        assertRejected(task3, result3);
-    }
-
-    @Test
-    public void testDiscardOldestAsRejectedExecutionHandler() throws InterruptedException {
-
-        final ExecutorService executorService
-                = createTestExecutorService(ThreadPoolRejectedPolicy.DiscardOldest.asRejectedExecutionHandler());
-
-        final MockRunnable task1 = new MockRunnable();
-        final Future<?> result1 = executorService.submit(task1);
-        final MockRunnable task2 = new MockRunnable();
-        final Future<?> result2 = executorService.submit(task2);
-        final MockRunnable task3 = new MockRunnable();
-        final Future<?> result3 = executorService.submit(task3);
-
-        shutdownAndAwait(executorService);
-
-        assertInvoked(task1, result1);
-        assertRejected(task2, result2);
-        assertInvoked(task3, result3);
-    }
-
-    @Test
-    public void testDiscardOldestAsRejectedExecutionHandlerWithRejectableTasks() throws InterruptedException {
-
-        final ExecutorService executorService
-                = createTestExecutorService(ThreadPoolRejectedPolicy.DiscardOldest.asRejectedExecutionHandler());
-
-        final MockRejectableRunnable task1 = new MockRejectableRunnable();
-        final Future<?> result1 = executorService.submit(task1);
-        final MockRejectableRunnable task2 = new MockRejectableRunnable();
-        final Future<?> result2 = executorService.submit(task2);
-        final MockRejectableRunnable task3 = new MockRejectableRunnable();
-        final Future<?> result3 = executorService.submit(task3);
-
-        shutdownAndAwait(executorService);
-
-        assertInvoked(task1, result1);
-        assertRejected(task2, result2);
-        assertInvoked(task3, result3);
-    }
-
     private ExecutorService createTestExecutorService(final RejectedExecutionHandler rejectedExecutionHandler) {
         return new RejectableThreadPoolExecutor(
                 1, 1, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(1), rejectedExecutionHandler);
diff --git a/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java b/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
index 4567ce64d58..78115451d7a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/builder/ThreadPoolBuilderTest.java
@@ -111,7 +111,7 @@ public class ThreadPoolBuilderTest extends ContextTestSupport {
         ThreadPoolBuilder builder = new ThreadPoolBuilder(context);
         ExecutorService executor
                 = builder.poolSize(50).maxPoolSize(100).maxQueueSize(2000).keepAliveTime(20000, TimeUnit.MILLISECONDS)
-                        .rejectedPolicy(ThreadPoolRejectedPolicy.DiscardOldest).build(this, "myPool");
+                        .rejectedPolicy(ThreadPoolRejectedPolicy.Abort).build(this, "myPool");
         assertNotNull(executor);
 
         assertFalse(executor.isShutdown());
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedExecutionTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedExecutionTest.java
index 38675f5511f..c717ca05abf 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedExecutionTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedExecutionTest.java
@@ -100,58 +100,6 @@ public class ThreadsRejectedExecutionTest extends ContextTestSupport {
         assertEquals(1, mock.getReceivedCounter());
     }
 
-    @Test
-    public void testThreadsRejectedDiscard() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("seda:start").to("log:before").threads(1, 1).maxPoolSize(1).maxQueueSize(2)
-                        .rejectedPolicy(ThreadPoolRejectedPolicy.Discard).delay(100).to("log:after")
-                        .to("mock:result");
-            }
-        });
-        context.start();
-
-        NotifyBuilder notify = new NotifyBuilder(context).whenDone(10).create();
-
-        getMockEndpoint("mock:result").expectedMinimumMessageCount(2);
-        for (int i = 0; i < 10; i++) {
-            template.sendBody("seda:start", "Message " + i);
-        }
-        assertMockEndpointsSatisfied();
-
-        assertTrue(notify.matchesWaitTime());
-
-        int inflight = context.getInflightRepository().size();
-        assertEquals(0, inflight);
-    }
-
-    @Test
-    public void testThreadsRejectedDiscardOldest() throws Exception {
-        context.addRoutes(new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("seda:start").to("log:before").threads(1, 1).maxPoolSize(1).maxQueueSize(2)
-                        .rejectedPolicy(ThreadPoolRejectedPolicy.DiscardOldest).delay(100).to("log:after")
-                        .to("mock:result");
-            }
-        });
-        context.start();
-
-        NotifyBuilder notify = new NotifyBuilder(context).whenDone(10).create();
-
-        getMockEndpoint("mock:result").expectedMinimumMessageCount(2);
-        for (int i = 0; i < 10; i++) {
-            template.sendBody("seda:start", "Message " + i);
-        }
-        assertMockEndpointsSatisfied();
-
-        assertTrue(notify.matchesWaitTime());
-
-        int inflight = context.getInflightRepository().size();
-        assertEquals(0, inflight);
-    }
-
     @Test
     public void testThreadsRejectedAbort() throws Exception {
         context.addRoutes(new RouteBuilder() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedPolicyTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedPolicyTest.java
index c3b0218697d..860bba0125a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedPolicyTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/ThreadsRejectedPolicyTest.java
@@ -20,7 +20,7 @@ import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.jupiter.api.Test;
 
-import static org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy.DiscardOldest;
+import static org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy.Abort;
 
 public class ThreadsRejectedPolicyTest extends ContextTestSupport {
 
@@ -47,11 +47,11 @@ public class ThreadsRejectedPolicyTest extends ContextTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                from("direct:start").threads(5, 10).rejectedPolicy(DiscardOldest).to("mock:result");
+                from("direct:start").threads(5, 10).rejectedPolicy(Abort).to("mock:result");
 
                 from("direct:foo")
                         // using the builder style
-                        .threads().poolSize(5).maxPoolSize(10).rejectedPolicy(DiscardOldest).threadName("myPool")
+                        .threads().poolSize(5).maxPoolSize(10).rejectedPolicy(Abort).threadName("myPool")
                         .to("mock:result");
             }
         };
diff --git a/core/camel-main/src/test/java/org/apache/camel/main/MainThreadPoolTest.java b/core/camel-main/src/test/java/org/apache/camel/main/MainThreadPoolTest.java
index 685bae967f1..867f698295f 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainThreadPoolTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainThreadPoolTest.java
@@ -33,7 +33,7 @@ public class MainThreadPoolTest {
         main.addProperty("camel.threadpool.pool-size", "5");
         main.addProperty("camel.threadpool.max-pool-size", "10");
         main.addProperty("camel.threadpool.max-queue-size", "20");
-        main.addProperty("camel.threadpool.rejectedPolicy", "DiscardOldest");
+        main.addProperty("camel.threadpool.rejectedPolicy", "Abort");
         main.start();
 
         CamelContext camelContext = main.getCamelContext();
@@ -44,7 +44,7 @@ public class MainThreadPoolTest {
         assertEquals(Boolean.TRUE, tp.isDefaultProfile());
         assertEquals("5", tp.getPoolSize().toString());
         assertEquals("10", tp.getMaxPoolSize().toString());
-        assertEquals("DiscardOldest", tp.getRejectedPolicy().toString());
+        assertEquals("Abort", tp.getRejectedPolicy().toString());
 
         main.stop();
     }
@@ -56,7 +56,7 @@ public class MainThreadPoolTest {
         main.addProperty("camel.threadpool.config[myPool].id", "myPool");
         main.addProperty("camel.threadpool.config[myPool].pool-size", "1");
         main.addProperty("camel.threadpool.config[myPool].max-pool-size", "2");
-        main.addProperty("camel.threadpool.config[myPool].rejectedPolicy", "DiscardOldest");
+        main.addProperty("camel.threadpool.config[myPool].rejectedPolicy", "Abort");
         main.addProperty("camel.threadpool.config[myBigPool].id", "myBigPool");
         main.addProperty("camel.threadpool.config[myBigPool].pool-size", "10");
         main.addProperty("camel.threadpool.config[myBigPool].max-pool-size", "200");
@@ -71,7 +71,7 @@ public class MainThreadPoolTest {
         assertEquals(Boolean.FALSE, tp.isDefaultProfile());
         assertEquals("1", tp.getPoolSize().toString());
         assertEquals("2", tp.getMaxPoolSize().toString());
-        assertEquals("DiscardOldest", tp.getRejectedPolicy().toString());
+        assertEquals("Abort", tp.getRejectedPolicy().toString());
 
         tp = camelContext.getExecutorServiceManager().getThreadPoolProfile("myBigPool");
         assertEquals("myBigPool", tp.getId());
@@ -90,7 +90,7 @@ public class MainThreadPoolTest {
         main.addProperty("camel.threadpool.pool-size", "5");
         main.addProperty("camel.threadpool.max-pool-size", "10");
         main.addProperty("camel.threadpool.max-queue-size", "20");
-        main.addProperty("camel.threadpool.rejectedPolicy", "DiscardOldest");
+        main.addProperty("camel.threadpool.rejectedPolicy", "CallerRuns");
         main.addProperty("camel.threadpool.config[myPool].id", "myPool");
         main.addProperty("camel.threadpool.config[myPool].pool-size", "1");
         main.addProperty("camel.threadpool.config[myPool].rejectedPolicy", "Abort");
@@ -105,7 +105,7 @@ public class MainThreadPoolTest {
         assertEquals("5", tp.getPoolSize().toString());
         assertEquals("10", tp.getMaxPoolSize().toString());
         assertEquals("20", tp.getMaxQueueSize().toString());
-        assertEquals("DiscardOldest", tp.getRejectedPolicy().toString());
+        assertEquals("CallerRuns", tp.getRejectedPolicy().toString());
 
         tp = camelContext.getExecutorServiceManager().getThreadPoolProfile("myPool");
         assertEquals("myPool", tp.getId());
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
index 76bfe9a6651..b8d0e0286c5 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableScheduledThreadPoolExecutor.java
@@ -26,9 +26,9 @@ import java.util.concurrent.ThreadFactory;
  * Scheduled thread pool executor that creates {@link RejectableFutureTask} instead of
  * {@link java.util.concurrent.FutureTask} when registering new tasks for execution.
  * <p/>
- * Instances of {@link RejectableFutureTask} are required to handle {@link ThreadPoolRejectedPolicy#Discard} and
- * {@link ThreadPoolRejectedPolicy#DiscardOldest} policies correctly, e.g. notify {@link Callable} and {@link Runnable}
- * tasks when they are rejected. To be notified of rejection tasks have to implement {@link Rejectable} interface: <br/>
+ * Instances of {@link RejectableFutureTask} are required to handle {@link ThreadPoolRejectedPolicy#Abort} policies
+ * correctly, e.g. notify {@link Callable} and {@link Runnable} tasks when they are rejected. To be notified of
+ * rejection tasks have to implement {@link Rejectable} interface: <br/>
  * <code><pre>
  * public class RejectableTask implements Runnable, Rejectable {
  *     &#064;Override
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
index 935bd7fe882..907bc496619 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/RejectableThreadPoolExecutor.java
@@ -28,9 +28,9 @@ import java.util.concurrent.TimeUnit;
  * Thread pool executor that creates {@link RejectableFutureTask} instead of {@link java.util.concurrent.FutureTask}
  * when registering new tasks for execution.
  * <p/>
- * Instances of {@link RejectableFutureTask} are required to handle {@link ThreadPoolRejectedPolicy#Discard} and
- * {@link ThreadPoolRejectedPolicy#DiscardOldest} policies correctly, e.g. notify {@link Callable} and {@link Runnable}
- * tasks when they are rejected. To be notified of rejection tasks have to implement {@link Rejectable} interface: <br/>
+ * Instances of {@link RejectableFutureTask} are required to handle {@link ThreadPoolRejectedPolicy#Abort} policies
+ * correctly, e.g. notify {@link Callable} and {@link Runnable} tasks when they are rejected. To be notified of
+ * rejection tasks have to implement {@link Rejectable} interface: <br/>
  * <code><pre>
  * public class RejectableTask implements Runnable, Rejectable {
  *     &#064;Override
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
index 64463d387e6..49fdf02e25e 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/concurrent/ThreadPoolRejectedPolicy.java
@@ -23,7 +23,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 /**
  * Represent the kinds of options for rejection handlers for thread pools.
  * <p/>
- * These options are used for fine grained thread pool settings, where you want to control which handler to use when a
+ * These options are used for fine-grained thread pool settings, where you want to control which handler to use when a
  * thread pool cannot execute a new task.
  * <p/>
  * Camel will by default use <tt>CallerRuns</tt>.
@@ -31,11 +31,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 public enum ThreadPoolRejectedPolicy {
 
     Abort,
-    CallerRuns,
-    @Deprecated
-    DiscardOldest,
-    @Deprecated
-    Discard;
+    CallerRuns;
 
     public RejectedExecutionHandler asRejectedExecutionHandler() {
         if (this == Abort) {
@@ -61,38 +57,6 @@ public enum ThreadPoolRejectedPolicy {
                     return "CallerRuns";
                 }
             };
-        } else if (this == DiscardOldest) {
-            return new RejectedExecutionHandler() {
-                @Override
-                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
-                    if (!executor.isShutdown()) {
-                        Runnable rejected = executor.getQueue().poll();
-                        if (rejected instanceof Rejectable) {
-                            ((Rejectable) rejected).reject();
-                        }
-                        executor.execute(r);
-                    }
-                }
-
-                @Override
-                public String toString() {
-                    return "DiscardOldest";
-                }
-            };
-        } else if (this == Discard) {
-            return new RejectedExecutionHandler() {
-                @Override
-                public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
-                    if (r instanceof Rejectable) {
-                        ((Rejectable) r).reject();
-                    }
-                }
-
-                @Override
-                public String toString() {
-                    return "Discard";
-                }
-            };
         }
         throw new IllegalArgumentException("Unknown ThreadPoolRejectedPolicy: " + this);
     }