Ignite 2.4.0 - SqlQuery结果与H2控制台

时间:2018-04-27 03:43:39

标签: spring caching ignite gridgain

我们使用ignite 2.0.0版本实现了一个缓存解决方案,用于这样的数据结构。

public class EntityPO {
  @QuerySqlField(index = true)
  private Integer accessZone;
  @QuerySqlField(index = true)
  private Integer appArea;
  @QuerySqlField(index = true)
  private Integer parentNodeId;
  private Integer dbId;
}

List<EntityPO> nodes = new ArrayList<>();
SqlQuery<String, EntityPO> sql =
    new SqlQuery<>(EntityPO.class, "accessZone = ? and appArea = ? and parentNodeId is not null");
sql.setArgs(accessZoneId, appArea);

  CacheConfiguration<String, EntityPO> cacheconfig = new 
  CacheConfiguration<>(cacheName);
  cacheconfig.setCacheMode(CacheMode.PARTITIONED);
  cacheconfig.setAtomicityMode(CacheAtomicityMode.ATOMIC);
  cacheconfig.setIndexedTypes(String.class, EntityPO.class);
  cacheconfig.setOnheapCacheEnabled(true);
  cacheconfig.setBackups(numberOfBackUpCopies);
  cacheconfig.setName(cacheName);
  cacheconfig.setQueryParallelism(1);
  cache = ignite.getOrCreateCache(cacheconfig);

我们有在特定accessZone和appArea中查找节点的方法。此方法在2.0.0中正常工作,我们升级到最新版本2.4.0版本,此方法不再返回任何内容(零记录)。我们启用了H2调试控制台并运行相同的查询,我们看到相同的至少3k记录。将库降级回2.0.0会使代码再次运行。如果您需要更多信息来帮助解决此问题,请与我们联系

来自H2控制台的结果。 H2 Console Results

1 个答案:

答案 0 :(得分:0)

如果您使用持久性,请检查群集的基线拓扑。 Baseline Topology是2.4版本中引入的主要功能。 简而言之,基线拓扑是可以存储数据的集合服务器节点。很可能是您的问题的原因是一个或多个服务器节点不在基线中。