]
Tristan Tarrant updated ISPN-11116:
-----------------------------------
Fix Version/s: 9.3.8.Final
(was: 9.3.7.Final)
Invalidation commands should not load the previous value from the
store
-----------------------------------------------------------------------
Key: ISPN-11116
URL:
https://issues.redhat.com/browse/ISPN-11116
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 9.3.6.Final, 9.4.17.Final, 10.0.1.Final, 10.1.0.Final
Reporter: Dan Berindei
Assignee: Dan Berindei
Priority: Major
Fix For: 9.3.8.Final, 11.0.0.Final, 9.4.18.Final, 10.1.1.Final
{{CacheLoaderInterceptor.visitInvalidateCommand()}} loads the previous value from the
store, just in case there is a {{CacheEntryInvalidated}} listener that needs the previous
value. This makes invalidation mode with a shared store very costly: for every write,
every node receives an invalidation command, every node reads the value from the store,
and then discards it.
But {{InvalidateCommand}} only removes entries from memory, it never removes entry from
stores (either shared or private). If we don't load the previous value in the data
container, there is nothing for the {{InvalidateCommand}} to do. No invalidated entry
means no listener notifications, so we don't need to load the previous value or to
change the behaviour of {{CacheEntryInvalidatedEvent}}.