db-torque-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Fischer <tfisc...@apache.org>
Subject RE: Torque Connection pool .. ORA- 01453 - Set Transaction must be the first statement
Date Mon, 10 Apr 2006 19:40:03 GMT
It helps if an error occurs in the doStuff() part, because the transaction 
is closed properly. As a further benefit, all updates/inserts since the 
last commit/rollback (which is hopefully at the point where you last 
returned the connection to the pool) are reverted.
If no errors occur, the rollback does not hurt, because it is after the 
commit.

By the way, I just committed the documentation page about transactions and 
connections. See

http://svn.apache.org/viewcvs.cgi/db/torque/runtime/trunk/xdocs/reference/connections-transactions.xml?view=markup

    Thomas

On Mon, 10 Apr 2006, Jim Caserta wrote:

> Exactly how does that rollback help at that point of
> the code Thomas?
>
> --- Thomas Fischer <tfischer@apache.org> wrote:
>
>> The code now looks good. It's fine to rollback after
>> you do the commit.
>>
>>     Thomas
>>
>> On Mon, 10 Apr 2006, Jim Caserta wrote:
>>
>>> So if I'm using the following code below,
>>> My question is:
>>> Even if the connection is fine and the database
>> logic
>>> does it's stuff correctly (Do Stuff)..
>>> And the connection is NOT closed. It's ok to do
>> the
>>> "rollback" since the commit worked fine also.
>> correct?
>>>
>>> 	Connection dbConn = null;
>>> 	try {
>>> 		dbConn =
>>> Torque.getConnection("db2.torque.environment");
>>> 		////Do Stuff
>>> 		dbConn.commit();
>>> 	}
>>> 	finally {
>>> 		if (dbConn == null)	{
>>> 			//Connection error logic
>>> 		}
>>> 		if (!dbConn.isClosed()) {
>>> 			dbConn.rollback();
>>> 			dbConn.close();
>>> 		}
>>> 	}
>>>
>>> --- Thomas Fischer <fischer@seitenbau.net> wrote:
>>>
>>>>
>>>> Jim Caserta <smoothie_jc@yahoo.com> schrieb am
>>>> 10.04.2006 17:40:05:
>>>>
>>>>> Sorry about the confusion. I meant using
>>>>> Torque.getConnection() and dbConn.close()
>> instead
>>>> of
>>>>> Transaction.begin()..
>>>>
>>>> For any DB which supports transactions:  _Make
>> sure_
>>>> that the connection is
>>>> in autocommit mode or use Transaction.begin and
>>>> Transaction.commit() or do
>>>> both. If you do not commit/rollback and are not
>> in
>>>> autocommit mode you can
>>>> run into ugly trouble (e.g. if the transaction
>>>> serialization is read
>>>> committed, other connections will never see the
>>>> changes to the data in the
>>>> uncommitted transaction and the like).
>>>>
>>>>> And if iI was. the following would work well?
>>>>>
>>>>>
>>>>>    Connection dbConn = null;
>>>>>    try {
>>>>>       // get a connection from the pool
>>>>>       dbConn =
>>>>> Torque.getConnection(db2.torque.environment);
>>>>>       ////Do Stuff
>>>>>       //Commit the transaction
>>>>>       dbConn.commit();
>>>>>    }
>>>>>    finally {
>>>>>       if (!dbConn.isClosed()) {
>>>>>          // some error occurred, try to rollback
>>>> and return
>>>>> connection to the pool
>>>>>          dbConn.close();
>>>>>          dbConn.rollback(); //Is this needed?
>>>>>       }
>>>>>    }
>>>>
>>>> This is similar to an earlier version I used some
>>>> time ago. The problem is
>>>> it would throw a NullPointerException in the
>> finally
>>>> block if
>>>> Torque.getConnection() fails. Also, you should
>>>> rollback() before you
>>>> close().
>>>>
>>>> Whatever code you use in the end, make sure (i.e.
>>>> _test_) that an error in
>>>> retrieving/working with the connection is handled
>>>> correctly.
>>>>
>>>>       Thomas
>>>>
>>>>
>>>>
>>>
>>
> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail:
>>>> torque-user-unsubscribe@db.apache.org
>>>> For additional commands, e-mail:
>>>> torque-user-help@db.apache.org
>>>>
>>>>
>>>
>>>
>>> __________________________________________________
>>> Do You Yahoo!?
>>> Tired of spam?  Yahoo! Mail has the best spam
>> protection around
>>> http://mail.yahoo.com
>>>
>>>
>>
> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail:
>> torque-user-unsubscribe@db.apache.org
>>> For additional commands, e-mail:
>> torque-user-help@db.apache.org
>>>
>>>
>>
>>
> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:
>> torque-user-unsubscribe@db.apache.org
>> For additional commands, e-mail:
>> torque-user-help@db.apache.org
>>
>>
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
> For additional commands, e-mail: torque-user-help@db.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org


Mime
View raw message