[
https://issues.jboss.org/browse/ISPN-2964?page=com.atlassian.jira.plugin....
]
Mircea Markus commented on ISPN-2964:
-------------------------------------
Attached a patch from [~sebastiantusk]. It is not complete yet, see the comments:
https://github.com/infinispan/infinispan/pull/1738
putForExternalRead to L1 not invalidated
----------------------------------------
Key: ISPN-2964
URL:
https://issues.jboss.org/browse/ISPN-2964
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 5.2.1.Final
Reporter: Sebastian Tusk
Assignee: Mircea Markus
Fix For: 5.3.0.Beta1, 5.3.0.Final
Attachments: SebastianTusk_ISPN-2964_fix.patch
With transactional distributed caches it happens that Cache.putForExternalRead(k,v)
places an entry into L1 that never gets invalidated. It seems to happen when the the owner
of k doesn't have the entry. In this case the non owner puts k into his cache without
having the owner registering this. Usually the owner stores all requesters in
L1ManagerImpl.addRequester and sends out invalidations to the requesters. What should
happen is that the entry is replicated to the owner.
Cache config:
<namedCache name="entity">
<jmxStatistics enabled="true" />
<clustering mode="dist">
<stateTransfer fetchInMemoryState="false"
timeout="20000" />
<async />
<l1 enabled="true" />
<hash numOwners="1"/>
</clustering>
<locking isolationLevel="READ_COMMITTED"
lockAcquisitionTimeout="15000" useLockStriping="false"
/>
<eviction maxEntries="10000" strategy="LRU" />
<expiration maxIdle="100000" wakeUpInterval="5000"/>
<storeAsBinary storeKeysAsBinary="true"
storeValuesAsBinary="false" enabled="false" />
<transaction transactionMode="TRANSACTIONAL"
autoCommit="false" lockingMode="OPTIMISTIC"/>
</namedCache>
--
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