camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Piotr Jagielski <pjagiel...@o2.pl>
Subject Re: Servicemix/Camel problem - ToJbiProcessor hangs
Date Fri, 25 Jul 2008 15:09:45 GMT

Gert,

In this case only camel jms listener thread hangs, other servicemix
components threads are just waiting like:

"pool-component.servicemix-http-thread-1" prio=1 tid=0x00002aaab8193500
nid=0x4d97 waiting on condition [0x0000000047611000..0x0000000047611c40]
        at sun.misc.Unsafe.park(Native Method)
        at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:146)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1803)
        at
java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:286)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.accept(DeliveryChannelImpl.java:270)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.pollDeliveryChannel(AsyncBaseLifeCycle.java:314)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle$1.run(AsyncBaseLifeCycle.java:300)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

There is one pool-component-servicemix-http thread with stack like:

"pool-component.servicemix-http-thread-1" prio=1 tid=0x00002aaab8193500
nid=0x4d97 waiting on condition [0x0000000047611000..0x0000000047611c40]
        at sun.misc.Unsafe.park(Native Method)
        at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:146)
        at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1803)
        at
java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:286)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.accept(DeliveryChannelImpl.java:270)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.pollDeliveryChannel(AsyncBaseLifeCycle.java:314)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle$1.run(AsyncBaseLifeCycle.java:300)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

Is it possible to recover from this by setting some timeout on jms
transaction manager?
My route definition is:
from("activemq:queueA").policy(required)
 .to("jbi:endpoint:B")

Regards,
Piotr


Gert Vanthienen wrote:
> 
> Piotr,
> 
> I'm guessing that at some point, the message you sent to the jbi 
> endpoint ends up in another Camel route.  ServiceMix has a thread pool 
> per component, so in order to process the exchange in the second Camel 
> route, it needs another thread from the pool, where all threads are 
> already waiting on sendSync. 
> 
> We should probably improve the servicemix-camel component to use send() 
> instead of sendSync() whenever possible.  For now, you should try to 
> increase the size of the thread pools by modifying 
> conf/servicemix.properties (for a global increase of thread pool size) 
> or by looking at http://servicemix.apache.org/thread-pools.html for a 
> more targeted tuning.
> 
> Regards,
> 
> Gert
> 
> Piotr Jagielski wrote:
>> Hi,
>>
>> I have some servicemix-camel service unit which uses following route:
>> jms queue -> jbi endpoint
>>
>> After launching some long-running tests, following error occured :
>>
>> Exception in thread "ActiveMQ Transport: tcp:///127.0.0.1:41368" 
>> java.lang.ArrayIndexOutOfBoundsException: 28515
>> >---at 
>> org.apache.activemq.openwire.OpenWireFormat.getFromUnmarshallCache(OpenWireFormat.java:513)

>>
>> >---at 
>> org.apache.activemq.openwire.v2.BaseDataStreamMarshaller.tightUnmarsalCachedObject(BaseDataStreamMarshaller.java:137)

>>
>> >---at 
>> org.apache.activemq.openwire.v2.ConnectionInfoMarshaller.tightUnmarshal(ConnectionInfoMarshaller.java:69)

>>
>> >---at 
>> org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:347)

>>
>> >---at 
>> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:273) 
>>
>> >---at 
>> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:156)

>>
>> >---at 
>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:136)
>> >---at java.lang.Thread.run(Thread.java:595)
>>
>> This exception is not itself a problem, but when i looked at thread 
>> dump, it appeared that ToJbiProcessor hung on DeliveryChannel.sendSync :
>>
>> "DefaultMessageListenerContainer-1776" prio=1 tid=0x00002aaaaea39ee0 
>> nid=0x4547 in Object.wait() [0x00000000539d3000..0x00000000539d4e40]
>>        at java.lang.Object.wait(Native Method)
>>        - waiting on <0x00002afd9884a428> (a 
>> org.apache.servicemix.jbi.messaging.InOutImpl)
>>        at 
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.waitForExchange(DeliveryChannelImpl.java:699)

>>
>>        at 
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:472)

>>
>>        - locked <0x00002afd9884a428> (a 
>> org.apache.servicemix.jbi.messaging.InOutImpl)
>>        at 
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:442)

>>
>>        at 
>> org.apache.servicemix.camel.ToJbiProcessor.process(ToJbiProcessor.java:76) 
>>
>>        at 
>> org.apache.servicemix.camel.JbiEndpoint$1.process(JbiEndpoint.java:46)
>>        at org.apache.camel.util.ProducerCache.send(ProducerCache.java:67)
>>        at org.apache.camel.CamelTemplate.send(CamelTemplate.java:107)
>>        at org.apache.camel.CamelTemplate.send(CamelTemplate.java:57)
>>
>> Is it possible to set some timeout while calling 
>> DeliveryChannel.sendSync?
>> Or shall I set timeout on jms transaction manager to rollback whole 
>> transaction? (How to do this?)
>> Should I post this on servicemix-user too?
>>
>> Regards,
>> Piotr
>>
> 
> 
> 
> -----
> ---
> Gert Vanthienen
> http://www.anova.be
> 

-- 
View this message in context: http://www.nabble.com/Servicemix-Camel-problem---ToJbiProcessor-hangs-tp18651622s22882p18653593.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message