找不到Apache Ignite替换的缓存条目

时间:2018-10-23 07:12:59

标签: java caching ignite

我的Ignite拓扑是启用本地持久性的2台服务器A和B,以及禁用持久性的2台服务器C和D。有一个REPLICATED缓存,它在Java中的服务器C和D上声明(也在XML中以声明方式尝试过),并传播到A和B。对等类加载已打开。

测试用例很小。缓存在C上填充

cache.put(key, value)

键是java.lang.String对象,值是我的POJO,没有任何字段注释(与SQL或相似性有关)。

然后,在服务器D上使用以下命令查询条目

cache.containsKey(key)

Iterator<Entry<String, MyPOJO>> it = cache.iterator();
while (it.hasNext()) {
    ...
}

cache.query(new ScanQuery<String, MyPOJO>(null)).getAll().forEach(...);

所有这些方法都不返回已插入服务器C的值。令人惊讶的是,

cache.get(key)

返回值。如果我使用Ignite Visor(作为客户端节点)连接到群集,它将显示存储在服务器A和B上的实体。

仅当替换了缓存模式时才会发生。如果更改为PARTITIONED,则以上所有缓存方法均能正常工作并返回插入的值。

更新

我手头没有配置XML,所以让我对其进行描述。

节点A和B:

  • 定义了网格名称
  • 已定义Kubernetes IP查找程序,并配置了Kubernetes服务名称和端口
  • 启用本机持久性

节点C和D:

  • 定义了网格名称
  • 未配置本地持久性
  • 定义了Kubernetes IP查找器
  • 缓存配置已定义,它由一个条目,我自己的Java类组成,该类扩展了org.apache.ignite.configuration.CacheConfiguration并从构造函数中调用setName(),setCacheMode()和其他一些方法

我将尽快提供确切的XML配置。

0 个答案:

没有答案