com.datastax.driver.core.Metadata:getHosts()返回错误的状态

时间:2018-05-24 03:41:05

标签: datastax-enterprise datastax-java-driver

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 :(得分:0)

我将发布一个我从datastaxacademy slack获得的答案:

  

Host.getState()是驾驶员对主机认为的看法   state是,nodetool status是C *节点认为的那个   集群中所有节点的状态都来自其视图(通过传播   八卦)没有办法通过驱动程序获取它