Apache ignite: отключить загрузку одноранговых классов - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь подключиться к серверу Apache Ignite из приложения Spring Boot.

Пример кода:

ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient client = Ignition.startClient(cfg)) {
    Object cachedName = client.query(
            new SqlFieldsQuery("SELECT name from Person WHERE id=?").setArgs("foo").setSchema("PUBLIC")
    ).getAll().iterator().next().iterator().next();
}

Я получаю эту ошибку:

Причина: класс org.apache.ignite.IgniteCheckedException: удаленный узел имеет флаг загрузки класса одноранговой сети, отличный от локального [locId8 = 459833a1, locPeerClassLoading = true, rmtId8 = 83ea88ca, rmtPeerClassLoading = ложь, rmtAddrs = [воспламеняется-0.ignite.default.svc.cluster.local / 0: 0: 0: 0: 0: 0: 0: 1% ло, /10.4.2.49, /127.0.0.1], rmtNode = ClusterNode [id = 83ea88ca-da77-4887-9357-267ac7397767, заказ = 1, addr = [0: 0: 0: 0: 0: 0: 0: 1% lo, 10.x.x.x, 127.0.0.1], daemon = false]]

Таким образом, PeerClassLoading необходимо деактивировать в моем коде Java. Как я могу это сделать?

1 Ответ

0 голосов
/ 21 июня 2019

Как отмечается в комментариях, ошибка происходит из-за клиента толщиной (или другого сервера), подключающегося к кластеру, но код от клиента thin .

Если вы просто читаете / пишете данные и не нуждаетесь в выполнении кода, тонкий клиент - отличный вариант.

Чтобы использовать толстый клиент, необходимо убедиться, что оба толстых клиентаи сервер имеют одинаковую конфигурацию загрузки однорангового класса.Это может быть:

<property name=“peerClassLoadingEnabled” value=“false” />

в вашем конфигурационном файле Spring.Или:

IgniteConfiguration cfg = new IgniteConfiguration()
            ...
            .setPeerClassLoadingEnabled(false);

(я использовал false здесь, поскольку это ваша текущая конфигурация сервера. Сказав это, вы, вероятно, хотите, чтобы он был включен.)

...