Just checked in a fix for that problem (CAY-439). Finally internal
Transactions start to resemble real transactions ;-) Per my unit
tests you can even wrap multiple DataContexts in manual internal
transactions.
Andrus
On Feb 6, 2006, at 10:59 AM, Andrus Adamchik wrote:
> Good point. While Cayenne transaction ensures consistent commit/
> rollback of multiple connections involved in the same transaction,
> it doesn't deal with isolation levels or DataSource management (I
> am surprised that it worked before?).
>
> The API was designed to rely on external transaction management in
> cases when Cayenne and non-Cayenne users access the same
> DataSource. But this overlooks the fact that there can be a second
> Cayenne process accessing DB in the same transaction via the delegate.
>
> With the new thread-bound Transaction approach, I think we can
> easily fix this problem and enable correct delegate functioning for
> internal transactions as well. I guess we can patch the DataNode
> and Transaction to obtain new connections from the thread
> Transaction instance, with the same Connection being handed
> repeatedly in the same thread.
>
> Andrus
>
>
> On Feb 6, 2006, at 9:51 AM, Cris Daniluk wrote:
>
>> I had previously asked about running stored procedures within the
>> same
>> transaction as other write operations and was advised to use a
>> TransactionDelegate:
>>
>> http://www.objectstyle.org/cayenne/lists/cayenne-user/
>> 2005/07/0132.html
>>
>> I'm fairly certain it wasn't doing this before, but in one of the
>> recent milestones, it started spawning a new connection for the
>> queries run within the willCommit() method.
>>
>> While a rollback triggered by my "inner" connection would trigger a
>> rollback in the "outside" connection, the locking is all screwed
>> up...
>> write locks are still held on tables needed by the stored procedure,
>> so it deadlocks now. I poked around some of the new Transaction
>> stuff,
>> but I can't seem to figure out how I might force a ProcedureQuery to
>> be appended to the same *database* transaction, not just Cayenne
>> transaction.
>>
>> Cris
>
>
This archive was generated by hypermail 2.0.0 : Mon Feb 06 2006 - 12:51:32 EST