Guys, I was thinking about ordering updates on backups so that we are able to send entry processors on backups as we do in TRANSACTIONAL cache.
What if we send not only the new version of an entry, but also the old version (the one that was replaced). Let's say we have an entry with version v0, and we apply updates with versions v1, v2, v3. Instead of sending just (val1, ver1), (val2, ver2), (val3, ver3) we can send (val1, ver0->ver1), (val2, ver1->ver2), (val3, ver2->ver3). In this case even if updated are processed on a backup node in a different order, we can queue updates and wait until all updates are received (like we did for ordered messages a while ago). The only concern that I have is that independent evicts cannot happen on a backup node because the version of an entry should always match on primary and backup nodes - so we should always initiate evict from primary node and use version to evict an entry - basically, treat evict as a remove, but with no write-through. Thoughts?