[hibernate-dev] afterTransactionCompletion(status) in JtaTransaction

Steve Ebersole steve at hibernate.org
Wed Jul 18 13:11:44 EDT 2012


I don't see an issue with changing that signature.

On 07/18/2012 10:27 AM, Sanne Grinovero wrote:
> Hi Steve,
> thanks for the clarification.
>
> Wouldn't it make sense then to add the "int status" as an argument to
> afterAfterTransaction as well? As it seems some code looks for this by
> invoking tx.getStatus() in implementations of this method, but that
> seems unsafe as I've found cases in which this gets the wrong status
> code at that point.
>
> Sanne
>
> On 18 July 2012 16:19, Steve Ebersole <steven.ebersole at gmail.com> wrote:
>> afterAfterTransaction is simply a part of the afterTransaction process.
>> afterTransaction is split into a number of steps, afterAfterTransaction
>> simply being the last step in that process.
>>
>>
>>
>> On Wed 18 Jul 2012 05:15:20 AM CDT, Sanne Grinovero wrote:
>>> Hi all,
>>> I'm puzzled about the implementation we have in
>>> org.hibernate.engine.transaction.internal.jta.JtaTransaction
>>>
>>> regarding after-transaction completion handling.
>>>
>>> Looking at the two methods:
>>> afterAfterCompletion();  <-- note the "After - After" prefix
>>> afterTransactionCompletion(int status);
>>>
>>>
>>> The implementation of afterTransactionCompletion(int status) is a
>>> no-op, while after-after-completion actually invokes the
>>> transactionCoordinator().afterTransaction( this,
>>> userTransaction.getStatus() );
>>> Shouldn't this be invoked in the afterTransactionCompletion(status)
>>> method?
>>>
>>> As I just noticed in some OGM tests, during the after-after phase it's
>>> too late to invoke the getStatus() on the transaction as this will
>>> have been cleaned up already: that's why the
>>> afterTransactionCompletion(int) has a status parameter, as the status
>>> argument should be used rather than attempting to lookup the
>>> transaction state again.
>>>
>>> OGM is having it's own AbstractTransactionImpl implementation;
>>> changing it by moving the afterTransaction call in the appropriate
>>> method fixed my problems to our Search integration.
>>>
>>> This looks like a change that should be picked up by ORM's
>>> JtaTransaction too? I'm not familiar with this, so I might be totally
>>> wrong but in case I would love to understand why.
>>>
>>> Cheers,
>>> Sanne
>>> _______________________________________________
>>> hibernate-dev mailing list
>>> hibernate-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev



-- 
steve at hibernate.org
http://hibernate.org



More information about the hibernate-dev mailing list