So that leaves the question, why isn't my client seeing this XA exception? Matt Cleveland
----- Original Message ----- From: "Bill Burke" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, January 23, 2003 6:54 AM Subject: RE: [JBoss-dev] HA Retrying a Transaction? (was 3.2RC1 Oracle XA Problem) > We only retry on connection exceptions. > > Bill > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED]]On Behalf Of Matt > > Cleveland > > Sent: Thursday, January 23, 2003 9:28 AM > > To: [EMAIL PROTECTED] > > Cc: [EMAIL PROTECTED] > > Subject: [JBoss-dev] HA Retrying a Transaction? (was 3.2RC1 Oracle XA > > Problem) > > > > > > Thanks for the info and the fix. I will be running the test you > > sent later > > today. > > > > Can you (or someone) explain a little more about HA retrying the failed > > transaction? It is my understanding the HA will fail over on > > communication > > exceptions but I haven't heard anything about retrying a transaction under > > any circumstances. If you're referring to failover then that can't be > > happening here because there is only 1 server started during this > > test. If > > there is another mechanism to retry a request then can someone elaborate. > > Is this configurable? How many times will it retry? What are the > > conditions for a retry? > > > > Thanks, > > Matt Cleveland > > > > > And last. XAException during transaction commit should be propagated > > > back to the client unless the transaction was successfully retried by HA > > > configuration. I am not too familiar with JBoss HA, but after quick look > > > into the code I believe that HA invoker does retry failed transaction. > > > > > > Matt Cleveland wrote: > > > > Perhaps I've missed something here. I've been so busy watching my log > > files > > > > that I did not recognize that the client is not receiving this error. > > In > > > > fact it is only reported as a warning. Still it's pretty scary to see > > these > > > > flying by in the log file. It leaves you wondering if the transaction > > > > committed or rolled back. From the stack trace I believe that the > > > > transaction rolled back and this is still an Oracle > > concurrency bug, but > > if > > > > that's not the case I wish the log message told me that. > > > > > > > > Thanks, > > > > Matt Cleveland > > > > > > > > > > > >>>>2003-01-21 21:42:09,141 WARN [org.jboss.tm.TransactionImpl] > > > >>>>XAException: tx=Tra > > > >>>>nsactionImpl:XidImpl [FormatId=257, GlobalId=malt//1809, > > BranchQual=] > > > >>>>errorCode= > > > >>>>XAER_RMERR > > > >>>>oracle.jdbc.xa.OracleXAException > > > >>>> at > > > > > >>>>oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1157 > > > >>>>) > > > >>>> at > > > > > >>>>oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:5 > > > >>>>90) > > > >>>> at > > > > > >>>>org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.commit(XAManag > > > >>>>edConnection.java:140) > > > >>>> at > > > > > >>>>org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:142 > > > >>>>0) > > > >>>> at > > > > > > > > org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:349) > > > > > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCM > > > >>>>T.java:361) > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep > > > >>>>torCMT.java:247) > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:1 > > > >>>>01) > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor. > > > >>>>java:130) > > > >>>> at > > > >>>>org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204) > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.CleanShutdownInterceptor.invoke(CleanShutdownIn > > > >>>>terceptor.java:265) > > > >>>> at > > > > > >>>>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFacto > > > >>>>ryFinderInterceptor.java:154) > > > >>>> at > > > > > >>>>org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContai > > > >>>>ner.java:303) > > > >>>> at org.jboss.ejb.Container.invoke(Container.java:680) > > > >>>> at > > > >>>>org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549) > > > >>>> at > > > > > >>>>org.jboss.invocation.jrmp.server.JRMPInvokerHA.invoke(JRMPInvokerHA.j > > > >>>>ava:163) > > > >>>> at java.lang.reflect.Method.invoke(Native Method) > > > >>>> at > > > >>>>sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) > > > >>>> at sun.rmi.transport.Transport$1.run(Transport.java:147) > > > >>>> at > > java.security.AccessController.doPrivileged(Native Method) > > > >>>> at > > sun.rmi.transport.Transport.serviceCall(Transport.java:143) > > > >>>> at > > > > > >>>>sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4 > > > >>>>60) > > > >>>> at > > > > > >>>>sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport > > > >>>>.java:701) > > > >>>> at java.lang.Thread.run(Thread.java:479) > > > >>>> > > > >>>>oracle-xa-ds > > > >>>>------------------ > > > >>>><?xml version="1.0" encoding="UTF-8"?> > > > >>>> > > > >>>><datasources> > > > >>>> <xa-datasource> > > > >>>> <jndi-name>XaOracleDS</jndi-name> > > > >>>> <track-connection-by-tx>true</track-connection-by-tx> > > > >>>> > > > >>>> > > > > > > <managedconnectionfactory-class>org.jboss.resource.adapter.jdbc.xa > > .oracle.XA > > > > > > > >>OracleManagedConnectionFactory</managedconnectionfactory-class> > > > >> > > > >>>> > > > > > > <!--xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</ > > xa-datasou > > > > > > > >>rce-class--> > > > >> > > > >>>> <xa-datasource-property > > > >>>>name="URL">jdbc:oracle:thin@server:port:sid</xa-datasource-property> > > > >>>> <xa-datasource-property > > name="User">scott</xa-datasource-property> > > > >>>> <xa-datasource-property > > > >> > > > >>name="Password">tiger</xa-datasource-property> > > > >> > > > >>>> <min-pool-size>0</min-pool-size> > > > >>>> <max-pool-size>50</max-pool-size> > > > >>>> <blocking-timeout-millis>20000</blocking-timeout-millis> > > > >>>> <idle-timeout-minutes>15</idle-timeout-minutes> > > > >>>> </xa-datasource> > > > >>>></datasources> > > > >>>> > > > >>>>Thanks, > > > >>>>Matt Cleveland > > > >>> > > > >>>-- > > > >>>Igor Fedorenko > > > >>>Think smart. Think automated. Think Dynamics. > > > >>>www.thinkdynamics.com > > > >>> > > > >>> > > > >>> > > > >>>------------------------------------------------------- > > > >>>This SF.net email is sponsored by: Scholarships for Techies! > > > >>>Can't afford IT training? All 2003 ictp students receive > > scholarships. > > > >>>Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more. > > > >>>www.ictp.com/training/sourceforge.asp > > > >>>_______________________________________________ > > > >>>Jboss-development mailing list > > > >>>[EMAIL PROTECTED] > > > >>>https://lists.sourceforge.net/lists/listinfo/jboss-development > > > >> > > > >> > > > >> > > > >> > > > >>------------------------------------------------------- > > > >>This SF.net email is sponsored by: Scholarships for Techies! > > > >>Can't afford IT training? All 2003 ictp students receive scholarships. > > > >>Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more. > > > >>www.ictp.com/training/sourceforge.asp > > > >>_______________________________________________ > > > >>Jboss-development mailing list > > > >>[EMAIL PROTECTED] > > > >>https://lists.sourceforge.net/lists/listinfo/jboss-development > > > >> > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > This SF.net email is sponsored by: Scholarships for Techies! > > > > Can't afford IT training? All 2003 ictp students receive scholarships. > > > > Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more. > > > > www.ictp.com/training/sourceforge.asp > > > > _______________________________________________ > > > > Jboss-development mailing list > > > > [EMAIL PROTECTED] > > > > https://lists.sourceforge.net/lists/listinfo/jboss-development > > > > > > -- > > > Igor Fedorenko > > > Think smart. Think automated. Think Dynamics. > > > www.thinkdynamics.com > > > > > > > > > ------------------------------------------------------------------ > > ---------- > > ---- > > > > > > > package test; > > > > > > import java.sql.Connection; > > > import java.sql.Statement; > > > > > > import javax.sql.XAConnection; > > > import javax.sql.XADataSource; > > > import javax.transaction.xa.XAException; > > > import javax.transaction.xa.XAResource; > > > import javax.transaction.xa.Xid; > > > > > > import oracle.jdbc.xa.OracleXAException; > > > import oracle.jdbc.xa.OracleXid; > > > import oracle.jdbc.xa.client.OracleXADataSource; > > > > > > /** > > > * Stress test. Works fine with both Oracle 8.1.7.3 and 9.2.0.1 > > > * > > > * @author ifedorenko > > > */ > > > public class StressTestXADatasource implements Runnable { > > > > > > static int gd = 1000; > > > static XADataSource ds = null; > > > static Object mutex = new Object(); > > > static volatile boolean run = true; > > > > > > public void run() { > > > try { > > > XAConnection xaconn; > > > synchronized (mutex) { > > > xaconn = ds.getXAConnection(); > > > } > > > Connection conn; > > > conn = xaconn.getConnection(); > > > XAResource xares = xaconn.getXAResource(); > > > for (int i = 0; ; i++) { > > > if ((i % 10) == 0) { > > > > > System.out.println(Thread.currentThread().getName() + > > ": " + i); > > > } > > > Xid xid = createXid(); > > > xares.start(xid, XAResource.TMNOFLAGS); > > > Statement stmt = conn.createStatement(); > > > try { > > > stmt.executeUpdate("insert into test(f1) values > > (to_char(sysdate, 'dd:mm:yyyy'))"); > > > } finally { > > > stmt.close(); > > > } > > > xares.end(xid, XAResource.TMSUCCESS); > > > xares.prepare(xid); > > > xares.commit(xid, false); // two-phase commit > > > } > > > } catch (Exception e) { > > > dump(e); > > > } > > > } > > > > > > public static void main(String[] args) throws Exception { > > > OracleXADataSource _ds = new OracleXADataSource(); > > > // _ds.setURL("jdbc:oracle:oci8:@tc"); > > > _ds.setURL("jdbc:oracle:thin:@oahu:1521:tc"); > > > // _ds.setURL("jdbc:oracle:thin:@10.1.1.13:1521:tc9i"); > > > _ds.setUser("scott"); > > > _ds.setPassword("tiger"); > > > ds = _ds; > > > > > > int max = 50; > > > for (int i = 0; i < max; i++) { > > > new Thread(new StressTestXADatasource()).start(); > > > } > > > } > > > > > > > > > static synchronized Xid createXid() throws XAException { > > > byte[] _gtrid = Integer.toString(gd++).getBytes(); > > > byte[] _bqual = Integer.toString(1).getBytes(); > > > byte[] gtrid = new byte[64]; > > > byte[] bqual = new byte[64]; > > > System.arraycopy(_gtrid, 0, gtrid, 0, _gtrid.length); > > > System.arraycopy(_bqual, 0, bqual, 0, _bqual.length); > > > Xid xid = new OracleXid(0x1234, gtrid, bqual); > > > return xid; > > > } > > > static void dump(Throwable e) { > > > e.printStackTrace(); > > > if (e instanceof OracleXAException) { > > > OracleXAException oe = (OracleXAException) e; > > > System.err.println( > > > "xa error: " > > > + oe.getXAError() > > > + " (" > > > + oe.getXAErrorMessage(oe.getXAError()) > > > + ")"); > > > System.err.println("oracle error: " + oe.getOracleError()); > > > System.err.println("oracle sql error: " + > > oe.getOracleSQLError()); > > > } else if (e instanceof XAException) { > > > XAException xe = (XAException) e; > > > System.err.println("xa error: " + xe.errorCode); > > > } > > > } > > > } > > > > > > > > > > > > > ------------------------------------------------------- > > This SF.NET email is sponsored by: > > SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! > > http://www.vasoftware.com > > _______________________________________________ > > Jboss-development mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/jboss-development > > > > ------------------------------------------------------- > This SF.NET email is sponsored by: > SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! > http://www.vasoftware.com > _______________________________________________ > Jboss-development mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/jboss-development ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
