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.