infinispan集群节点过期结果与官方文档描述不一致



当我测试 infinispan 集群节点缓存的过期方法时,发现当节点达到最大空闲时间时,不会从集群中的其他节点那里得到"上次访问该条目",而是直接使该节点的缓存条目失效。例如:我启动了两个节点 A 和 B,并将缓存的最大空闲时间设置为 10s。在测试开始时,我向节点 A 发送了一个请求,以访问数据库记录并将数据库记录写入缓存。此时,节点 A 将数据缓存同步到节点 B。然后在 5 秒时,我在节点 A 访问缓存条目,然后在 10 秒后访问节点 B 的缓存条目。我发现节点 B 处的缓存条目无效,节点 B 从数据库中检索数据库记录,并写入缓存并同步到其他节点,而不是将缓存视为有效。

为什么它与文档中的描述不同? http://infinispan.org/docs/stable/user_guide/user_guide.html#expiration_details

对于集群节点缓存过期失败的配置,我配置如下:

Configuration C = new ConfigurationBuilder()
.expiration().enableReaper(). wakeUpInterval(50000L).maxIdle(10000l).build();

听起来您使用的是旧版本的Infinispan。群集范围的最大空闲过期时间直到 https://issues.jboss.org/browse/ISPN-9003 年的 9.3 才引入。如果此问题在 9.3 或更高版本中仍然存在,您可以在 https://issues.jboss.org/projects/ISPN 处记录错误。

最新更新