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,