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

Reply via email to