It seems the stack trace shows that the queues / thread pools are totally
filled and you are running out of these resources.  In such a case, the
component sending the jbi exchange will be blocked until there is more
room.  The behavior can be tuned by changing the seda queue sizes (see
http://servicemix.apache.org/thread-pools.html).  You can use unbounded
queues if you want, but you may run out of memory, use unlimited thread
number (which may run out of memory too), or have a maximum for both (in
which case the sender would block).

I'm not sure what really happens with your JMS endpoint.  Could you post the
configuration used maybe ?

On Jan 1, 2008 6:28 PM, Ryan Moquin <[EMAIL PROTECTED]> wrote:

> So I've been tracking down a problem in my servicemix CXF service, where I
> have a thread (I know I probably shouldn't be doing it that way, I'm
> guessing a quartz task is probably the recommended way) that does some
> data
> collection in the background for the service "appears" to stop running.  I
> managed to reproduce this state and did a thread dump on the service.  I
> found trying to send to my jms endpoint is locking the whole thing up.
>  I'm
> a little puzzled as to why, and was hoping someone could give me some
> insight on this and help me to understand what I need to do to prevent it
> from happening.  I'm still investigating the stack dump but I'm hoping
> someone might just already know the answer of why servicemix would stay
> locked at this point.  I've been trying to figure out why my JMS messages
> seem to "stop" after a while, this would explain that as well.
>
>
> Here is the code that tries to send some data to a jms queue, the last
> line
> is where it's hanging:
>
> InOnly exchange = client.createInOnlyExchange();
>    NormalizedMessage message = exchange.getInMessage();
>    message.setContent(new StreamSource(new StringReader(data)));
>    exchange.setService(jmsServiceQname);
>    client.send(exchange);
>
> Here is the stacktrace where it is hung:
>
> "Thread-13" daemon prio=6 tid=0x2925fd10 nid=0xae8 waiting on condition
> [0x2f05e000..0x2f05fa18]
>        at sun.misc.Unsafe.park(Native Method)
>        at java.util.concurrent.locks.LockSupport.park(LockSupport.java
> :118)
>        at
>
> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await
> (
> AbstractQueuedSynchronizer.java:18
> 41)
>        at java.util.concurrent.ArrayBlockingQueue.put(
> ArrayBlockingQueue.java:368)
>        at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(
> DeliveryChannelImpl.java:663)
>        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(
> AbstractFlow.java:170)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(
> SedaFlow.java:167)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(
> SedaQueue.java:134)
>        at
> java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution
> (
> ThreadPoolExecutor.java:1455)
>        at java.util.concurrent.ThreadPoolExecutor.reject(
> ThreadPoolExecutor.java:384)
>        at java.util.concurrent.ThreadPoolExecutor.execute(
> ThreadPoolExecutor.java:867)
>        at org.apache.servicemix.executors.impl.ExecutorImpl.execute(
> ExecutorImpl.java:43)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue.enqueue(
> SedaQueue.java:128)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.enqueuePacket(
> SedaFlow.java:182)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doSend(
> SedaFlow.java:162)
>        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(
> AbstractFlow.java:123)
>        at org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(
> DefaultBroker.java:283)
>        at
> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(
> SecuredBroker.java:81)
>        at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(
> JBIContainer.java:830)
>        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(
> DeliveryChannelImpl.java:395)
>        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(
> DeliveryChannelImpl.java:431)
>        at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(
> BaseLifeCycle.java:58)
>        at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(
> DeliveryChannelImpl.java:610)
>        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(
> AbstractFlow.java:170)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(
> SedaFlow.java:167)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(
> SedaQueue.java:134)
>        at
> java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution
> (
> ThreadPoolExecutor.java:1455)
>        at java.util.concurrent.ThreadPoolExecutor.reject(
> ThreadPoolExecutor.java:384)
>        at java.util.concurrent.ThreadPoolExecutor.execute(
> ThreadPoolExecutor.java:867)
>        at org.apache.servicemix.executors.impl.ExecutorImpl.execute(
> ExecutorImpl.java:43)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue.enqueue(
> SedaQueue.java:128)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.enqueuePacket(
> SedaFlow.java:182)
>        at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doSend(
> SedaFlow.java:162)
>        at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(
> AbstractFlow.java:123)
>        at org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(
> DefaultBroker.java:283)
>        at
> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(
> SecuredBroker.java:81)
>        at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(
> JBIContainer.java:830)
>        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(
> DeliveryChannelImpl.java:395)
>        at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(
> DeliveryChannelImpl.java:431)
>        at org.apache.servicemix.client.DefaultServiceMixClient.send(
> DefaultServiceMixClient.java:147)
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Reply via email to