Details
-
Bug
-
Status: Open
-
Blocker
-
Resolution: Unresolved
-
3.2.3, servicemix-bean-2008.01, servicemix-jms-2008.01
-
None
-
Windows XP, 4GB mem, jdk 1.6
Description
At some point during the 3.3 SNAPSHOT releases, our application stopped working. I did not have a chance to get a concrete case together to illustrate the problem until now. The test case is as follows (client sends 2000 JMS messages):
Client JMS App -> JMS consumer -> servicemix-bean -> JMS provider
The attached project works perfectly fine on a 3.3-SNAPSHOT release I have which appears to be from August 22nd. I've never been able to get this sequence to work since, it appears that the servicemix-bean SU will choke after a couple hundred messages and freeze up.
When I run the described test on my August 22nd servicemix I will end up with 2000 messages having been queued and dequeued from the test.source topic and queued on the test.destination topic.
When I run the described test on the 3.3 release, I will end up with 2000 message enqueued and dispatched on the test.source topic, but only 576 dequeued. It mentions the other 1474 are in flight.
If I look at the threads, I see a bunch that are stuck waiting for an exchange (I'm guessing the servicemix-jms component never sends a reply?):
Name: pool-flow.seda.servicemix-bean-thread-7
State: WAITING on org.apache.servicemix.jbi.messaging.InOnlyImpl@158ef1f
Total blocked: 0 Total waited: 1
Stack trace:
java.lang.Object.wait(Native Method)
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.waitForExchange(DeliveryChannelImpl.java:709)
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:472)
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:442)
org.apache.servicemix.client.DefaultServiceMixClient.sendSync(DefaultServiceMixClient.java:156)
test.BeanImpl.onMessageExchange(BeanImpl.java:96)
org.apache.servicemix.bean.BeanEndpoint.onProviderExchange(BeanEndpoint.java:226)
- locked org.apache.servicemix.bean.support.Request@1b2a9cf
org.apache.servicemix.bean.BeanEndpoint.process(BeanEndpoint.java:212)
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:600)
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:554)
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:510)
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620)
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
java.lang.Thread.run(Thread.java:619)
This seems to be a bug to me since it worked on that one 3.3-SNAPSHOT, but not on any since. The 3.3-SNAPSHOT I have is also before the renaming of components to 2008.01.
I'll try a few other tests to see if I can narrow down any other cause since I would really like to get upgraded to the full release.
Attached is a small project that will allow you to reproduce this issue, it's just a modification of the bridge sample with an extra SU in it. Here is all you need to do:
1. Build the attached project.
2. Deploy the built bridge-test-sa-3.3.zip
3. execute "java -jar test-jms-client-1.0.one-jar.jar" from the bridge-test/test-jms-client/target directory.