[infinispan-issues] [JBoss JIRA] (ISPN-6051) ClusterExpirationManager missing locking

William Burns (JIRA) issues at jboss.org
Mon Feb 1 10:06:00 EST 2016


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

William Burns commented on ISPN-6051:
-------------------------------------

Unfortunately we can't create the command in the DataContainer lock on a non owner node as this would cause a deadlock issue.

If we do this in the data container compute and another concurrent write occurs on the same key the primary will send a write command to the backup owner and then it will never be able to acquire the data container lock.  And the remote node will not be able to acquire the Infinispan lock on the primary node for that key.

Unfortunately this can't be fixed this way.

> ClusterExpirationManager missing locking
> ----------------------------------------
>
>                 Key: ISPN-6051
>                 URL: https://issues.jboss.org/browse/ISPN-6051
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 8.1.0.Final
>            Reporter: Dan Berindei
>            Assignee: William Burns
>             Fix For: 8.2.0.CR1
>
>
> Because {{ClusterExpirationManager.handleLifespanExpired()}} doesn't lock the entry and the value is actually read in the async thread, the created {{RemoveExpiredCommand}} sometimes uses a newer value written by another thread.
> Could be fixed by using {{DataContainer.compute()}} to check expiration and create the {{RemoveExpirationCommand}}.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the infinispan-issues mailing list