Message loss in JBM due to exceptions
-------------------------------------
Key: JBESB-3195
URL:
https://jira.jboss.org/jira/browse/JBESB-3195
Project: JBoss ESB
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Application Server
Affects Versions: 4.7 CP1
Environment: Name: JBoss ESB
Specification-Title: jbossesb-server-4.7
Specification-Version: 4.7
Specification-Vendor: JBoss
Implementation-Version: 4.7 November 20 2009
JBoss AS 4.2.3.GA
Reporter: Tamas Cserveny
Attachments: endlessloop.100ms.esb, endlessloop.1ms.esb
We created a little endless loop esb components to create a load test of JBossESB. This
component picks up files from a directory and then puts it to a JBM queue which is bridged
to another JBM queue which is then dumped to the input directory.
We kept this running for 7 days circulating 200x4kb files, the result is the following:
193 of them left in the loop. 7 messages were lost!
I got 7 of these log enties:
2010-02-26 16:35:36,403 ERROR [org.jboss.jms.client.container.ClientConsumer] Failed to
deliver message
javax.jms.JMSException: There is no transaction with id
LocalTx[vyra-0dga556g-1-ptgju46g-u8oycj-51zk6a]
at org.jboss.jms.tx.ResourceManager.addAck(ResourceManager.java:186)
at
org.jboss.jms.client.container.SessionAspect.handlePreDeliver(SessionAspect.java:293)
at
org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect19.invoke(SessionAspect19.java)
at
org.jboss.jms.client.delegate.ClientSessionDelegate$preDeliver_5548846795541436298.invokeNext(ClientSessionDelegate$preDeliver_5548846795541436298.java)
I attached two versions of the code. The difference is the bridge's
"MaxBatchTime" property.
The above result was created with 100ms as setting.
In case this time is lowered to 1ms (we did it by a mistake) then an additional exception
was seen:
2010-03-04 11:22:56,157 ERROR [org.jboss.messaging.util.ExceptionUtil]
ConnectionEndpoint[c-r0tqed6g-1-imhqed6g-mbvwsd-er3k1l1] sendTransaction
[9c3-lygred6g-1-imhqed6g-mbvwsd-er
3k1l1]
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at
org.jboss.jms.server.endpoint.ServerSessionEndpoint.acknowledgeTransactionally(ServerSessionEndpoint.java:1474)
at
org.jboss.jms.server.endpoint.ServerConnectionEndpoint.processTransaction(ServerConnectionEndpoint.java:810)
at
org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendTransaction(ServerConnectionEndpoint.java:473)
at
org.jboss.jms.server.endpoint.advised.ConnectionAdvised.org$jboss$jms$server$endpoint$advised$ConnectionAdvised$sendTransaction$aop(ConnectionAdvised.java:101)
at
org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
at
org.jboss.jms.server.container.SecurityAspect.handleSendTransaction(SecurityAspect.java:195)
Both exceptions can be reproduced easily with the 1ms version.
It seems that there is a race condition in JBM or JBossESB.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira