Update timestamps is configured with asynchronous replication. A side effect of this choice is that when an entity/collection is updated, for a very brief period of time stale queries might be returned. It's important to note that due to how Infinispan deals with asynchronous replication, stale queries might be found even query is done right after an entity/collection update on same node. The reason why asynchronous replication works this way is because there's a single node that's owner for a given key, and that enables changes to be applied in the same order in all nodes. Without it, it could happen that an older value could replace a newer value in certain nodes. This behaviour, which can be slightly misleading, could be changed by making sure the update happens locally first, but to able to do that, the CallInterceptor would need to be replaced to make sure timestamp updates are monotonically increasing. |