首页 > 解决方案 > infinispan集群节点过期结果与官方文档描述不一致

问题描述

在测试infinispan集群节点缓存的过期方式时,发现当节点达到最大空闲时间时,不会从集群中的其他节点获取“最后一次访问该条目的时间”,而是直接使缓存条目失效的节点。例如:我启动了两个节点A和B,设置缓存的最大空闲时间为10s。在测试开始时,我向节点 A 发送了一个请求以访问数据库记录并将数据库记录写入缓存。这时节点A将数据缓存同步到节点B。然后在5s时,我访问了节点A的缓存条目,10s后又访问了节点B。发现Node B的缓存入口无效,Node 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

解决方案


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


推荐阅读