On 2 Jun 2011, at 13:19, Scott Marlow wrote:
On 06/02/2011 05:31 AM, Mircea Markus wrote:
>
> On 1 Jun 2011, at 20:49, Scott Marlow wrote:
>
>> I posted a message on the as7-dev ml
>> (
http://lists.jboss.org/pipermail/jboss-as7-dev/2011-May/002254.html),
>> about switching to use the TransactionSynchronizationRegistry.
>>
>> Does Infinispan currently register Transaction synchronization objects?
> yes
>> Does Infinispan currently register synchronizations via
>> TransactionSynchronizationRegistry (TSR)?
> no, we register synchronizations through transaction.registerSynchronization
>>
>> I'm trying to get a sense for, what would happen if container managed
>> (AS7) session beans were registered with the active JTA transaction via
>> the TSR.
>>
>> If AS7 switches to use the TSR, I think that Infinispan might need to
>> ensure that it doesn't attempt to register with the TX too late.
> right. One way to go is by making the registration code pluggable.
I should point out that I believe its only a problem, to call
Transaction.registerSynchronization() after the point, where the ordering cannot be
correct. However, no such checking is performed if no components are registering their
syncs via TransactionSynchronizationRegistry.
So, another question, how likely would it be, that an application would see Infinispan
registering a sync via Transaction.registerSynchronization(), after the transaction commit
has been initiated?
ATM Infinispan allows the registration if the transaction is in
one of the following states: Status.STATUS_ACTIVE || Status.STATUS_PREPARING. If tx is in
any other state the sync won't be registered and a exception is instead sent to the
user.
If Transaction.registerSynchronization() will always be called by Infinispan before the
transaction commits. We shouldn't have to be as concerned about support for
registering the Infinispan syncs with TransactionSynchronizationRegistry.
If the answer is we aren't sure or Transaction.registerSynchronization() could happen
after the transaction commit has been started, we should have it be pluggable.
From Jonathan's comment[1] I understand that "interposed Synchronizations must be
called after non-interposed ones". That seems to be true disregarding tx's
status. Or am I wrong?
[1]
http://bit.ly/lAJKvm