com.datastax.driver.core.Metadata: getHosts () возвращает неправильное состояние - PullRequest
0 голосов
/ 24 мая 2018

Любая причина, по которой com.datastax.driver.core.Metadata:getHosts() возвращает состояние UP для хоста, который выключен?

Однако nodetool status возвращает DN для этого хоста.

Независимо от того, сколько раз я проверяю Host.getState(), он все равно говорит UP для этого мертвого хоста.

Вот как я запрашиваю Metadata:

cluster = DseCluster.builder()
    .addContactPoints("192.168.1.1", "192.168.1.2", "192.168.1.3")
    .withPort(9042)
    .withReconnectionPolicy(new ConstantReconnectionPolicy(2000))
    .build();

cluster.getMetadata().getAllHosts();

РЕДАКТИРОВАТЬ: Обновлен код, чтобы отразить, что я пытаюсь подключиться к 3 хостам.Я должен был сказать, что кластер, к которому я подключаюсь, имеет 3 узла, 2 в DC1 и еще один в DC2.

Кроме того, всякий раз, когда я перезапускаю свой Java-процесс, выполняющий этот код, поведение меняется.Иногда он дает мне правильные состояния, затем, когда я снова запускаю его, он дает мне неправильные состояния и т. Д.

1 Ответ

0 голосов
/ 26 мая 2018

Я опубликую ответ, полученный от datastaxacademy slack:

Host.getState() - это представление водителя о том, каково состояние хоста, где nodetool status - это то, что C *узел думает, что состояние всех узлов в кластерах зависит от его представления (распространяемого с помощью сплетен). Нет способа получить это через драйвер

...