]
Radim Vansa commented on ISPN-5653:
-----------------------------------
It seems that can be fixed in {{TrackingEntryIterable}}:
{code}
return new RemovableEntryIterator(iterator,
cache.getAdvancedCache().withFlags(flags.toArray(new Flag[flags.size()])), true);
{code}
keySet().iterator() does not propagate flags to remove()
--------------------------------------------------------
Key: ISPN-5653
URL:
https://issues.jboss.org/browse/ISPN-5653
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 7.2.3.Final, 8.0.0.Beta2
Reporter: Radim Vansa
Calling {{remove()}} on iterator obtained through keySet() does not propagate flags from
the original (decorated) cache. Test case (should go into BaseEntryRetrieverTest):
{code}
@Test
public void simpleTestWithFlags() {
Map<Object, String> values = putValuesInCache();
final Cache<Object, Object> cache = cache(0, CACHE_NAME);
cache.getAdvancedCache().addInterceptor(new BaseCustomInterceptor() {
@Override
public Object visitRemoveCommand(InvocationContext ctx, RemoveCommand command)
throws Throwable {
assertTrue(command.hasFlag(Flag.SKIP_CACHE_STORE));
return super.visitRemoveCommand(ctx, command);
}
}, 0);
for (Iterator it = cache(0,
CACHE_NAME).getAdvancedCache().withFlags(Flag.SKIP_CACHE_STORE).keySet().iterator();
it.hasNext();) {
assertTrue(values.containsKey(it.next()));
it.remove();
}
}
{code}