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 {
* @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 {
* @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);
}