Recently [1] was found. The underlying cause is that now initial state
transfer is enabled by default including invalidation caches.
When thinking about this I didn't even realize that we utilize a Replicated
consistent hash for invalidation mode. This all strikes me as just wrong.
To me an invalidation cache is just a local cache that sends broadcasted
invalidation messages to other members. It shouldn't have any need for a
consistent hash.
Currently though we have an invalidation cache that will try to acquire
remote locks [2], reports ownership of keys by the consistent hash (instead
of each node owning every key as it would be in a local cache [3]), which
will participate in initial state transfer (REPL based) [4] among other
things. We even have invalidation commands that are tied to given
topologies [5].
I was originally planning on cutting the cord between invalidation caches
and state transfer, but I am finding so many places that assume we have a
topology that it requires more code that I would have thought. So I wanted
to check if anyone had any objections. If there are objections I can end
up taking the quick and easy route of just forcing disabling of initial
state transfer and leaving everything as it is otherwise. I personally
feel we should completely separate these concepts to guarantee what I would
think as proper behavior.
Thanks,
- Will
[1]
https://issues.jboss.org/browse/ISPN-5560
[2]
https://github.com/infinispan/infinispan/blob/master/core/src/test/java/o...
[3]
https://github.com/infinispan/infinispan/blob/master/core/src/main/java/o...
[4]
https://github.com/infinispan/infinispan/blob/master/core/src/test/java/o...
[5]
https://issues.jboss.org/browse/ISPN-4016