[infinispan-issues] [JBoss JIRA] (ISPN-3838) L1 entry added by ST when already invalidated

William Burns (JIRA) issues at jboss.org
Tue Jan 28 08:21:28 EST 2014


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

William Burns commented on ISPN-3838:
-------------------------------------

The original issue could be fixed with re purposing updatedKeys to be non null after the new CH is installed to detect writes that occur before the requestors is updated during L1OnRehash operation.

This however still has a gap that if a concurrent write has past the L1Interceptor (thus missing requestors check) and hasn't yet been committed (hasn't added to updatedkeys).  In this case the owner would have registered a requestor that is now pointing to old value instead of invalidating him.
                
> L1 entry added by ST when already invalidated
> ---------------------------------------------
>
>                 Key: ISPN-3838
>                 URL: https://issues.jboss.org/browse/ISPN-3838
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 6.0.0.Final
>            Reporter: Radim Vansa
>            Assignee: William Burns
>            Priority: Critical
>              Labels: 620
>
> Non-transactional cache with L1 enabled. Node A is losing ownership of an entry, the entry is not removed during ST but is going to L1.
> 1. ST builds the invalidation command, EntryWrapping interceptor starts committing all the entries
> 2. Write on primary owner (B) occurs
> 3. A gets the InvalidateL1Command, removes the ImmortalCacheEntry from data container (as it does not own the entry anymore)
> 4. The ST invalidation command commits the MortalCacheEntry with old value, storing it into the data container.
> Result: Outdated value is in L1 cache.
> As the entry is not locked during the ST, it can be committed as MortalCacheEntry only if it was not changed (removed and possibly then cached again with different value).
> (I understand that this wouldn't be easy to implement as the check is not to be executed in perform, but during the actual commit - and atomically in the container.)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the infinispan-issues mailing list