Nothing like a cry for help to get me interested.

>From a brief look at the source and from what I can remember from my work on
this stuff the problem is in JBossMQ SpySession class.  From what I can see
the sendMessage method needs to be synchronized and I think that will solve
your problem.  

What I guess is happening is that another thread is calling commit at the
same time this thread is calling sendMessage and hence the
currentTransactionID is invalid when it gets passed through to the
XAResourceManager.

So you either need to patch SpySession sendMessage so that it is
synchronized or patch the client code (the code calling the JBossMQ stuff)
so that it doesn't have threads calling commit on the session at the same
time other threads are using the queueSender.send() method.  I must admit
any client where the order of these two operations is indeterminate is in
dangerous territory as they won't know which transaction their message sends
are ending up in, which probably why the bug hasn't shown up before.  I
guess the client code in this case is the JMS RA stuff (which I know nothing
about) so it might need investigating.

David.


> -----Original Message-----
> From: Jason Dillon [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, May 23, 2002 7:37 AM
> To: [EMAIL PROTECTED]
> Subject: [JBoss-dev] Seeing occasional Invalid tx id with JMS RA
> 
> 
> I spent the last week upgrading my service to JBoss3, which made the 
> configuration much easier for me to managed (no more hacks in 
> jboss.conf for 
> extra classpaths and such), but I am still seeing an 
> occasional "Invalid 
> Invalid transaction id." when using the JMS RA and JBossMQ.
> 
> I changed my model so that my client (invoked inside of a 
> NotSupported MDB) 
> uses a SFSB with a referece to java:/JmsXA RA, mostly to get around 
> serialization issues, but whatever.
> 
> A test sceneraio creates 1000 request messages, each of which 
> will send back 
> 1+n responses, where n could vary from 2-? depending on how 
> long the request 
> took to process.
> 
> So lets assume that for each request that there are 3 
> responses, so there are 
> 5000 messages, 1000 to a request queue and 4000 to a response 
> queue.  I am 
> seeing an occasional problem sending responses back where 
> several responses 
> in a row will fail with this Invalid transaction id.
> 
> Each request/response(s) cyle is exactly the same... so why 
> could some have 
> invalid tx id's and others have valid ones?
> 
> Below is a trace from one of the exceptions, though I doubt 
> it is of much use.  
> Any idea what might be causing this?  Is this likely to be a 
> JMS RA problem 
> or JBossMQ problem?
> 
> Any insight would be helpful, I really need to track this 
> problem down.
> 
> --jason
> 
> 
> <snip>
> com.boldfish.does.worker.WorkerException: failed to send 
> message; - nested 
> throwable is: javax.jms.JMSException: Invalid transaction id.
>  + nested throwable:
> javax.jms.JMSException: Invalid transaction id.
>         at 
> org.jboss.mq.SpyXAResourceManager.addMessage(SpyXAResourceMana
> ger.java:71)
>         at org.jboss.mq.SpySession.sendMessage(SpySession.java:395)
>         at 
> org.jboss.mq.SpyQueueSender.internalSend(SpyQueueSender.java:118)
>         at org.jboss.mq.SpyQueueSender.send(SpyQueueSender.java:68)
>         at 
> com.boldfish.ben.system.adapter.jms.ejb.QueueSenderAdapterEJB.
> send(QueueSenderAdapterEJB.java:340)
>         at 
> sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
> odAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:324)
>         at 
> org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.in
> voke(StatefulSessionContainer.java:823)
>         at 
> org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInter
> ceptor.java:129)
>         at 
> org.jboss.resource.connectionmanager.CachedConnectionIntercept
> or.invoke(CachedConnectionInterceptor.java:147)
>         at 
> org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invok
> e(StatefulSessionInstanceInterceptor.java:266)
>         at 
> org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(Abstrac
> tTxInterceptor.java:96)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxI
> nterceptorCMT.java:167)
>         at 
> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT
> .java:61)
>         at 
> org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:166)
>         at 
> org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionC
> ontainer.java:380)
>         at org.jboss.ejb.Container.invoke(Container.java:705)
>         at 
> org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:491)
>         at 
> org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
>         at 
> org.jboss.invocation.InvokerInterceptor.invoke(InvokerIntercep
> tor.java:102)
>         at 
> org.jboss.proxy.TransactionInterceptor.invoke(TransactionInter
> ceptor.java:73)
>         at 
> org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor
> .java:76)
>         at 
> org.jboss.proxy.ejb.StatefulSessionInterceptor.invoke(Stateful
> SessionInterceptor.java:117)
>         at 
> org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
>         at $Proxy23.send(Unknown Source)
> </snip>
> 
> _______________________________________________________________
> 
> Don't miss the 2002 Sprint PCS Application Developer's Conference
> August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm
> 
> _______________________________________________
> Jboss-development mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
> 
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.362 / Virus Database: 199 - Release Date: 5/7/2002
>  
> 

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.362 / Virus Database: 199 - Release Date: 5/7/2002
 

_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to