-
Bug
-
Resolution: Obsolete
-
Major
-
None
-
10.1.5.Final, 11.0.0.Dev03
-
None
ClusterExpirationManager.checkExpiredMaxIdle() sends a TouchCommand to the other owners and expires the entry locally if the touch was unsuccessful.
ScatteredTouchResponseCollector is stateless, and reports that the entry has not been touched if it doesn't receive any true response. However, this is only correct if at least one backup entry existing on another node, and that is not the always the case: e.g. between the backup node leaving the cluster and another node becoming a backup, or when the cluster has a single node.
Since ClusterExpirationManager.checkExpiredMaxIdle() is called on every read, before the entry being expired on the local node, it means a transient entry in a scattered cache with a single node will expire on the first read, immediately after being inserted.