Thomas, I see what you mean...
I'm assuming I can take the same approach if I'm Not using a Transaction. Correct? Jim --- Thomas Fischer <[EMAIL PROTECTED]> wrote: > Hi, > > I am using the following code: > > Connection dbConn = null; > try > { > dbConn = > Transaction.begin(db2.torque.environment)); > > ////Do Stuff > > //Commit the transaction (Transaction.commit > releases connection back > to the pool) > Transaction.commit(dbConn); > dbConn = null; > } > finally > { > if (connection != null) > { > // some error occurred, try to rollback and > return connection to > pool > Transaction.safeRollback(dbConn); > dbConn = null; > } > } > > It is safer to use a finally block than a catch > block. In some ugly cases, > you get errors and not exceptions, and they are not > caught by > catch(exception). Also, the finally block works even > if you return inside > the block. > > I have also written some docs about this, but I have > forgotten to commit it > :-(. > > Thomas > > > Jim Caserta <[EMAIL PROTECTED]> schrieb am > 10.04.2006 15:27:37: > > > Thomas, > > > > I was reading through this thread and I wantwed to > be > > sure what you are saying. Is the example below the > way > > we should be handling transactions? Thanks! > > > > > > Connection dbConn = null; > > try { > > dbConn = > Transaction.begin(db2.torque.environment)); > > > > ////Do Stuff > > //Commit the transaction > (Transaction.commit, should > > release connection back to the pool > > Transaction.commit(dbConn); > > Transaction.safeRollback(dbConn); > > }catch(TorqueException e){ > > try { > > Transaction.rollback(dbConn); > > } catch (TorqueException e1) { > > Transaction.safeRollback(dbConn); > > } > > }finally { > > if(!dbConn.isClosed()){ > > Torque.closeConnection(dbConn); > > } > > } > > > > > > --- Thomas Fischer <[EMAIL PROTECTED]> wrote: > > > > > Using commits/rollbacks without explicitly > startung > > > a connection may look > > > unclean but does not cause any problems in > practice > > > (at least none known > > > to me). The problem described seems to be the > other > > > way round: there is no > > > rollback/commit where should be one. > > > > > > Thomas > > > > > > On Mon, 27 Mar 2006, Greg Monroe wrote: > > > > > > > I did a quick wander thru the Torque code and > saw > > > one thing > > > > that did not look right to me. Here's some > > > background first: > > > > > > > > All of the Torque Transaction handling is > built on > > > the > > > > Transaction class. This is used primarily by > the > > > BasePeer > > > > methods like doUpdate(Criteria) and the like. > > > > > > > > These methods are the ones that automatically > wrap > > > the > > > > DB actions as a transaction with rollback. > > > > > > > > The first thing that didn't look right to me > was > > > that the > > > > Transaction.beginOptional(dbName, > useTransaction) > > > method > > > > is called with the useTransaction arg set to > the > > > value of > > > > criteria.isUseTransation(). This value is set > to > > > false by > > > > default. > > > > > > > > So, it seems that if you don't set this > explicitly > > > on your > > > > Criteria, you are not using really using > > > transactions but > > > > you still have the Transaction try/catch code > with > > > commits and > > > > rollbacks. > > > > > > > > Shouldn't the default for isUseTransactions() > be > > > true and/or > > > > the code handle the false condition without > > > calling the > > > > extra transaction methods? > > > > > > > > > > > >> -----Original Message----- > > > >> From: vivek sar [mailto:[EMAIL PROTECTED] > > > >> Sent: Saturday, March 25, 2006 4:44 AM > > > >> > > > >> Thanks Thomas for detailed explanation. I > haven't > > > dig into > > > >> the Torque or dbcp code to tell exactly where > the > > > fault lies. > > > >> The way I understand is that the db starts > the > > > transaction on > > > >> your behalf if you don't start one. In case > that > > > transaction > > > >> fails it will try to rollback. The problem > I've > > > stated is > > > >> while the transaction is rolling back the > same > > > connection is > > > >> somehow being used by other query and that's > > > causing the > > > >> "ORA-01453" and hanging of the connection. > > > >> > > > >> I would think it's a problem with dbcp if > not > > > torque as dbcp > > > >> is the one that handles the connection pool. > I > > > couldn't find > > > >> much on the dbcp commons mailing-archiving > list, > > > but found > > > >> tons of similar problems reported by torque > > > users, so I think > > > >> most of the people do assume it's a Torque > > > problem or > > > >> somewhere related to it. > > > >> > > > >> Yes, if I do handle the transaction myself I > > > don't get into > > > >> this issue, but still the connection pool > should > > > handle the > > > >> transactions/connections gracefully if it's > > > starting one on > > > >> your behalf. > > > >> > > > >> I've the autocommit turned on (by default), > so > === message truncated === __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]