Hi,
We have few questions about cache propagation in DC environment:
1. Is cache.remove(key) call propagated to all other nodes even if cache on this node or other nodes did not contains entry with this key? Is CacheEntryListener.onRemove executed for all nodes after cache.remove(key) on one node.
2. Are all cache.put(key) calls propagated to other nodes and CacheEntryListener.add()/.update()/.remove() is invoked? We have noticed that only put for key which has value in cache ('Update') is propagated to other nodes. If there is no value for this key, it is treated as 'Add' and it is not porpagated to other nodes. So from our observations 'Add' is not propagated to other nodes, 'Update' is propagated to other nodes. Is it true?
3. Why after cache.removeAll() CacheEntryListener are not notified? Is any way to be notified about cache.removeAll() on other nodes? In DelegatingCacheEventListener method notifyRemoveAll is not implemented. Is there any reason for that?
4. We think about implement workaround by get net.sf.ehcache.Cache from DelegatingCache and add our CacheEventListener to registeredEventListeners to be able to be notified about removeAll. Do you have better solutions which we overlooked for this situation?
For us, RemoveAll is alternative for remove(@Nonnull K key) used for thousands of keys, because call remove(@Nonnull K key) one by one has very bad performance