[infinispan-issues] [JBoss JIRA] (ISPN-4569) Inserting into cache with indexing fails for XA transactions

Radim Vansa (JIRA) issues at jboss.org
Mon Jul 28 13:21:30 EDT 2014


    [ https://issues.jboss.org/browse/ISPN-4569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12988412#comment-12988412 ] 

Radim Vansa commented on ISPN-4569:
-----------------------------------

{quote}
* we shouldn't start a transaction during a prepare -> indexing in Hibernate is registered as a post Transaction synchronization
{quote}
Where is it registered, as a synchronization? (just asking)
{quote}
* the ServiceRegistry access should be unrelated to the main TX (many more services might need this)
{quote}
If executed when any locks are held, it must be part of the main TX, because you can't guarantee that you won't try to write another entry with the same lock.
{quote}
* why is the ServiceRegistry transactional? Never asked for such trouble
{quote}
There is this comment: 'use a transactional cache for high consistency as writes are expected to be rare in this cache'
I don't think people generally consider TXs "trouble" :) I think it's rather considered something with added value.

> Inserting into cache with indexing fails for XA transactions
> ------------------------------------------------------------
>
>                 Key: ISPN-4569
>                 URL: https://issues.jboss.org/browse/ISPN-4569
>             Project: Infinispan
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Embedded Querying, Transactions
>    Affects Versions: 7.0.0.Alpha5
>            Reporter: Radim Vansa
>            Assignee: Dan Berindei
>
> If I setup XA transactions in {{ClusteredQueryDslConditionsTest}} using
> {code}
> cacheCfg.transaction().transactionMode(TransactionMode.TRANSACTIONAL).useSynchronization(false);
> {code}
> the test fails. The reason is in deadlock while updating {{ScopedKey}} in  __cluster_registry_cache__ : It seems that on originator we create transaction with modified inserted key and the {{ScopedKey}} for inserted class, and send it in two prepare commands to the other node. In the {{ScopedKey}}-prepare, the lock is acquired, but the regular prepare on the other node does not see it (it is not committed yet) and also tries to update this {{ScopedKey}} in  __cluster_registry_cache__ . This fails with lock timeout, as the commit is waiting on the regular prepare to finish.



--
This message was sent by Atlassian JIRA
(v6.2.6#6264)


More information about the infinispan-issues mailing list