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进程时,行为都会发生变化。有时它会给我正确的状态,然后当我再次重新启动时,它会给我错误的状态,等等。
答案 0 :(得分:0)
我将发布一个我从datastaxacademy slack获得的答案:
Host.getState()
是驾驶员对主机认为的看法 state是,nodetool status
是C *节点认为的那个 集群中所有节点的状态都来自其视图(通过传播 八卦)没有办法通过驱动程序获取它