[
https://issues.jboss.org/browse/ISPN-1198?page=com.atlassian.jira.plugin....
]
Galder Zamarreño updated ISPN-1198:
-----------------------------------
Summary: Cache entrySet,keySet and values operations ignoring expired
entries (was: remove entries from a cache with getBulk operation on RemoteCache after
their lifespan ends)
Affects Version/s: 4.2.1.FINAL
Description:
Cache's entrySet/keySet/values implementations do not take into account that entries
might have expired, so the collections returned might contain key/value pairs that should
be removed.
This has the side effect of getBulk remote cache operation returning entries even after
their lifespan ends. From Martin:
{quote}This is related to a getBulk operation on an Infinispan HotRod client.
Simple test snippet that fails ATM:
{code}Map<String,String> mapIn = new HashMap<String,String>() ;
Map<String,String> mapOut = new HashMap<String,String>() ;
mapOut.put("aKey", "aValue");
mapOut.put("bKey", "bValue");
remoteCache.putAll(mapOut, lifespanInSecs, TimeUnit.SECONDS);
sleepForSecs(lifespanInSecs) ;
mapIn = remoteCache.getBulk();
assertTrue(mapIn.size() == 0); //fails, entries are still there{code}
However, when I call remoteCache.get(<key>); for all the keys and then getBulk, the
getBulk return empty map.
So it seems the get operations cause the entries to be removed from the cache. Please
implement this also for getBulk operation or reject it with an explanation.{quote}
was:
This is related to a getBulk operation on an Infinispan HotRod client.
Simple test snippet that fails ATM:
Map<String,String> mapIn = new HashMap<String,String>() ;
Map<String,String> mapOut = new HashMap<String,String>() ;
mapOut.put("aKey", "aValue");
mapOut.put("bKey", "bValue");
remoteCache.putAll(mapOut, lifespanInSecs, TimeUnit.SECONDS);
sleepForSecs(lifespanInSecs) ;
mapIn = remoteCache.getBulk();
assertTrue(mapIn.size() == 0); //fails, entries are still there
However, when I call remoteCache.get(<key>); for all the keys and then getBulk, the
getBulk return empty map.
So it seems the get operations cause the entries to be removed from the cache. Please
implement this also for getBulk operation or reject it with an explanation.
Component/s: Core API
Cache entrySet,keySet and values operations ignoring expired entries
--------------------------------------------------------------------
Key: ISPN-1198
URL:
https://issues.jboss.org/browse/ISPN-1198
Project: Infinispan
Issue Type: Feature Request
Components: Core API
Affects Versions: 4.2.1.FINAL, 5.0.0.CR5
Reporter: Martin Gencur
Assignee: Galder Zamarreño
Fix For: 5.0.0.CR7, 5.0.0.FINAL
Cache's entrySet/keySet/values implementations do not take into account that entries
might have expired, so the collections returned might contain key/value pairs that should
be removed.
This has the side effect of getBulk remote cache operation returning entries even after
their lifespan ends. From Martin:
{quote}This is related to a getBulk operation on an Infinispan HotRod client.
Simple test snippet that fails ATM:
{code}Map<String,String> mapIn = new HashMap<String,String>() ;
Map<String,String> mapOut = new HashMap<String,String>() ;
mapOut.put("aKey", "aValue");
mapOut.put("bKey", "bValue");
remoteCache.putAll(mapOut, lifespanInSecs, TimeUnit.SECONDS);
sleepForSecs(lifespanInSecs) ;
mapIn = remoteCache.getBulk();
assertTrue(mapIn.size() == 0); //fails, entries are still there{code}
However, when I call remoteCache.get(<key>); for all the keys and then getBulk, the
getBulk return empty map.
So it seems the get operations cause the entries to be removed from the cache. Please
implement this also for getBulk operation or reject it with an explanation.{quote}
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira