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
