You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Willem Jiang <wi...@gmail.com> on 2010/10/13 08:33:53 UTC
Re: svn commit: r1021642 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/model/ThreadsDefinition.java
test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
Hi Claus,
The ThreadsZeroInCoreAndMaxPoolTest hang in lots platforms with JDK5,
I doubt the JDK5 can't handle the core thread with 0, maybe we should
set the core thread to 1 if the configure is 0.
On 10/12/10 3:14 PM, davsclaus@apache.org wrote:
> Author: davsclaus
> Date: Tue Oct 12 07:14:13 2010
> New Revision: 1021642
>
> URL: http://svn.apache.org/viewvc?rev=1021642&view=rev
> Log:
> CAMEL-3220: Fixed threads which now accepts 0 as core pool size.
>
> Added:
> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
> - copied, changed from r1021617, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java
> Modified:
> camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
>
> Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java?rev=1021642&r1=1021641&r2=1021642&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java (original)
> +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java Tue Oct 12 07:14:13 2010
> @@ -70,32 +70,28 @@ public class ThreadsDefinition extends O
>
> @Override
> public Processor createProcessor(RouteContext routeContext) throws Exception {
> - // The threads name
> + // the threads name
> String name = getThreadName() != null ? getThreadName() : "Threads";
>
> // prefer any explicit configured executor service
> executorService = ExecutorServiceHelper.getConfiguredExecutorService(routeContext, name, this);
> + // if no explicit then create from the options
> if (executorService == null) {
> - // none was configured so create an executor based on the other parameters
> - if (poolSize == null || poolSize<= 0) {
> - // use the cached thread pool
> - executorService = routeContext.getCamelContext().getExecutorServiceStrategy().newDefaultThreadPool(this, name);
> - } else {
> - ThreadPoolProfile profile = routeContext.getCamelContext().getExecutorServiceStrategy().getDefaultThreadPoolProfile();
> - // use the default thread pool profile as base and then override with values
> - // use a custom pool based on the settings
> - int max = getMaxPoolSize() != null ? getMaxPoolSize() : profile.getMaxPoolSize();
> - long keepAlive = getKeepAliveTime() != null ? getKeepAliveTime() : profile.getKeepAliveTime();
> - int maxQueue = getMaxQueueSize() != null ? getMaxQueueSize() : profile.getMaxQueueSize();
> - TimeUnit tu = getTimeUnit() != null ? getTimeUnit() : profile.getTimeUnit();
> - RejectedExecutionHandler rejected = profile.getRejectedExecutionHandler();
> - if (rejectedPolicy != null) {
> - rejected = rejectedPolicy.asRejectedExecutionHandler();
> - }
> -
> - executorService = routeContext.getCamelContext().getExecutorServiceStrategy()
> - .newThreadPool(this, name, poolSize, max, keepAlive, tu, maxQueue, rejected, true);
> + ThreadPoolProfile profile = routeContext.getCamelContext().getExecutorServiceStrategy().getDefaultThreadPoolProfile();
> + // use the default thread pool profile as base and then override with values
> + // use a custom pool based on the settings
> + int core = getPoolSize() != null ? getPoolSize() : profile.getPoolSize();
> + int max = getMaxPoolSize() != null ? getMaxPoolSize() : profile.getMaxPoolSize();
> + long keepAlive = getKeepAliveTime() != null ? getKeepAliveTime() : profile.getKeepAliveTime();
> + int maxQueue = getMaxQueueSize() != null ? getMaxQueueSize() : profile.getMaxQueueSize();
> + TimeUnit tu = getTimeUnit() != null ? getTimeUnit() : profile.getTimeUnit();
> + RejectedExecutionHandler rejected = profile.getRejectedExecutionHandler();
> + if (rejectedPolicy != null) {
> + rejected = rejectedPolicy.asRejectedExecutionHandler();
> }
> +
> + executorService = routeContext.getCamelContext().getExecutorServiceStrategy()
> + .newThreadPool(this, name, core, max, keepAlive, tu, maxQueue, rejected, true);
> }
>
> ThreadsProcessor thread = new ThreadsProcessor(routeContext.getCamelContext(), executorService);
>
> Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java (from r1021617, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java)
> URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java&r1=1021617&r2=1021642&rev=1021642&view=diff
> ==============================================================================
> --- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java (original)
> +++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java Tue Oct 12 07:14:13 2010
> @@ -22,7 +22,7 @@ import org.apache.camel.builder.RouteBui
> /**
> * @version $Revision$
> */
> -public class ThreadsCoreAndMaxPoolTest extends ContextTestSupport {
> +public class ThreadsZeroInCoreAndMaxPoolTest extends ContextTestSupport {
>
> public void testThreadsCoreAndMaxPool() throws Exception {
> getMockEndpoint("mock:result").expectedMessageCount(1);
> @@ -46,13 +46,13 @@ public class ThreadsCoreAndMaxPoolTest e
> @Override
> public void configure() throws Exception {
> from("direct:start")
> - // will use a a custom thread pool with 5 in core and 10 as max
> - .threads(5, 10)
> + // will use a a custom thread pool with 0 in core and 2 max
> + .threads(0, 2)
> .to("mock:result");
>
> from("direct:foo")
> - // using the builder style
> - .threads().poolSize(5).maxPoolSize(10).threadName("myPool")
> + // only change thread name and max, but rely on default settings
> + .threads().maxPoolSize(20).threadName("myPool")
> .to("mock:result");
> }
> };
>
>
>
--
Willem
----------------------------------
Open Source Integration: http://www.fusesource.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.javaeye.com (Chinese)
Twitter: http://twitter.com/willemjiang
Re: svn commit: r1021642 - in /camel/trunk/camel-core/src:
main/java/org/apache/camel/model/ThreadsDefinition.java test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
Posted by Claus Ibsen <cl...@gmail.com>.
On Wed, Oct 13, 2010 at 8:33 AM, Willem Jiang <wi...@gmail.com> wrote:
> Hi Claus,
>
> The ThreadsZeroInCoreAndMaxPoolTest hang in lots platforms with JDK5,
> I doubt the JDK5 can't handle the core thread with 0, maybe we should set
> the core thread to 1 if the configure is 0.
>
Just skip this test for now.
>
> On 10/12/10 3:14 PM, davsclaus@apache.org wrote:
>>
>> Author: davsclaus
>> Date: Tue Oct 12 07:14:13 2010
>> New Revision: 1021642
>>
>> URL: http://svn.apache.org/viewvc?rev=1021642&view=rev
>> Log:
>> CAMEL-3220: Fixed threads which now accepts 0 as core pool size.
>>
>> Added:
>>
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
>> - copied, changed from r1021617,
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java
>> Modified:
>>
>> camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
>>
>> Modified:
>> camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
>> URL:
>> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java?rev=1021642&r1=1021641&r2=1021642&view=diff
>>
>> ==============================================================================
>> ---
>> camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
>> (original)
>> +++
>> camel/trunk/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java
>> Tue Oct 12 07:14:13 2010
>> @@ -70,32 +70,28 @@ public class ThreadsDefinition extends O
>>
>> @Override
>> public Processor createProcessor(RouteContext routeContext) throws
>> Exception {
>> - // The threads name
>> + // the threads name
>> String name = getThreadName() != null ? getThreadName() :
>> "Threads";
>>
>> // prefer any explicit configured executor service
>> executorService =
>> ExecutorServiceHelper.getConfiguredExecutorService(routeContext, name,
>> this);
>> + // if no explicit then create from the options
>> if (executorService == null) {
>> - // none was configured so create an executor based on the
>> other parameters
>> - if (poolSize == null || poolSize<= 0) {
>> - // use the cached thread pool
>> - executorService =
>> routeContext.getCamelContext().getExecutorServiceStrategy().newDefaultThreadPool(this,
>> name);
>> - } else {
>> - ThreadPoolProfile profile =
>> routeContext.getCamelContext().getExecutorServiceStrategy().getDefaultThreadPoolProfile();
>> - // use the default thread pool profile as base and then
>> override with values
>> - // use a custom pool based on the settings
>> - int max = getMaxPoolSize() != null ? getMaxPoolSize() :
>> profile.getMaxPoolSize();
>> - long keepAlive = getKeepAliveTime() != null ?
>> getKeepAliveTime() : profile.getKeepAliveTime();
>> - int maxQueue = getMaxQueueSize() != null ?
>> getMaxQueueSize() : profile.getMaxQueueSize();
>> - TimeUnit tu = getTimeUnit() != null ? getTimeUnit() :
>> profile.getTimeUnit();
>> - RejectedExecutionHandler rejected =
>> profile.getRejectedExecutionHandler();
>> - if (rejectedPolicy != null) {
>> - rejected =
>> rejectedPolicy.asRejectedExecutionHandler();
>> - }
>> -
>> - executorService =
>> routeContext.getCamelContext().getExecutorServiceStrategy()
>> - .newThreadPool(this, name,
>> poolSize, max, keepAlive, tu, maxQueue, rejected, true);
>> + ThreadPoolProfile profile =
>> routeContext.getCamelContext().getExecutorServiceStrategy().getDefaultThreadPoolProfile();
>> + // use the default thread pool profile as base and then
>> override with values
>> + // use a custom pool based on the settings
>> + int core = getPoolSize() != null ? getPoolSize() :
>> profile.getPoolSize();
>> + int max = getMaxPoolSize() != null ? getMaxPoolSize() :
>> profile.getMaxPoolSize();
>> + long keepAlive = getKeepAliveTime() != null ?
>> getKeepAliveTime() : profile.getKeepAliveTime();
>> + int maxQueue = getMaxQueueSize() != null ? getMaxQueueSize()
>> : profile.getMaxQueueSize();
>> + TimeUnit tu = getTimeUnit() != null ? getTimeUnit() :
>> profile.getTimeUnit();
>> + RejectedExecutionHandler rejected =
>> profile.getRejectedExecutionHandler();
>> + if (rejectedPolicy != null) {
>> + rejected = rejectedPolicy.asRejectedExecutionHandler();
>> }
>> +
>> + executorService =
>> routeContext.getCamelContext().getExecutorServiceStrategy()
>> + .newThreadPool(this, name, core, max,
>> keepAlive, tu, maxQueue, rejected, true);
>> }
>>
>> ThreadsProcessor thread = new
>> ThreadsProcessor(routeContext.getCamelContext(), executorService);
>>
>> Copied:
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
>> (from r1021617,
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java)
>> URL:
>> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java&r1=1021617&r2=1021642&rev=1021642&view=diff
>>
>> ==============================================================================
>> ---
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsCoreAndMaxPoolTest.java
>> (original)
>> +++
>> camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ThreadsZeroInCoreAndMaxPoolTest.java
>> Tue Oct 12 07:14:13 2010
>> @@ -22,7 +22,7 @@ import org.apache.camel.builder.RouteBui
>> /**
>> * @version $Revision$
>> */
>> -public class ThreadsCoreAndMaxPoolTest extends ContextTestSupport {
>> +public class ThreadsZeroInCoreAndMaxPoolTest extends ContextTestSupport {
>>
>> public void testThreadsCoreAndMaxPool() throws Exception {
>> getMockEndpoint("mock:result").expectedMessageCount(1);
>> @@ -46,13 +46,13 @@ public class ThreadsCoreAndMaxPoolTest e
>> @Override
>> public void configure() throws Exception {
>> from("direct:start")
>> - // will use a a custom thread pool with 5 in core and
>> 10 as max
>> - .threads(5, 10)
>> + // will use a a custom thread pool with 0 in core and
>> 2 max
>> + .threads(0, 2)
>> .to("mock:result");
>>
>> from("direct:foo")
>> - // using the builder style
>> -
>> .threads().poolSize(5).maxPoolSize(10).threadName("myPool")
>> + // only change thread name and max, but rely on
>> default settings
>> + .threads().maxPoolSize(20).threadName("myPool")
>> .to("mock:result");
>> }
>> };
>>
>>
>>
>
>
> --
> Willem
> ----------------------------------
> Open Source Integration: http://www.fusesource.com
> Blog: http://willemjiang.blogspot.com (English)
> http://jnn.javaeye.com (Chinese)
> Twitter: http://twitter.com/willemjiang
>
--
Claus Ibsen
Apache Camel Committer
Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus