Apache Ignite REPLICATED записи кэша не найдены - PullRequest
0 голосов
/ 23 октября 2018

Моя топология Ignite - это 2 сервера A и B с включенным собственным постоянством и два сервера C и D с отключенным постоянством.Существует кэш REPLICATED, он объявлен на серверах C и D в Java (также пробный декларативный способ в XML) и распространен на A и B. Загрузка класса Peer включена.

Тестовый случай тривиален.Кэш заполняется на 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.

Это происходит только в том случае, если режим кэширования REPLICATED.Если значение изменено на PARTITIONED, все приведенные выше методы кэширования работают правильно и возвращают вставленные значения.

UPDATE

У меня нет XML-конфигурации под рукой, поэтому позвольте мнепросто опишите это.

Узлы A и B:

  • определено имя сетки
  • Определен IP-искатель Kubernetes с настроенным именем службы Kubernetes и портом
  • включено собственное постоянство

Узлы C и D:

  • имя сетки определено
  • собственное постоянство не настроено
  • Определен IP-искатель Kubernetes
  • определена конфигурация кеша, она состоит из одной записи, моего собственного Java-класса, который расширяет org.apache.ignite.configuration.CacheConfiguration и вызывает setName (), setCacheMode () инесколько других методов из конструктора

Я постараюсь в ближайшее время предоставить точную конфигурацию XML.

...