Ignite 2.4.0 - результаты SqlQuery не совпадают с результатами запроса из консоли H2 - PullRequest
0 голосов
/ 27 апреля 2018

Мы реализовали решение для кэширования, используя версию 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

1 Ответ

0 голосов
/ 27 апреля 2018

Если вы используете постоянство, проверьте базовую топологию для вашего кластера. Базовая топология является основной функцией, представленной в версии 2.4. Вкратце, базовая топология представляет собой набор узлов сервера, которые могут хранить данные. Скорее всего, причина вашей проблемы в том, что один или несколько узлов сервера не находятся в базовой линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...