datastax-enterprise - com.datastax.driver.core.Metadata:getHosts() 返回不正确的状态
问题描述
为什么要为已关闭的主机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 进程时,行为都会发生变化。有时它给了我正确的状态,然后当我再次重新启动它时,它给了我错误的状态,等等。
解决方案
我将发布从 datastaxacademy slack 获得的答案:
Host.getState()
是驱动程序对它认为的主机状态的nodetool status
看法,C* 节点认为集群中所有节点的状态在哪里(通过八卦传播) 没有办法通过驱动程序获得它
推荐阅读
- delphi - 使用按钮 OnClick 将值输入到 TEdit
- border - iOS 图表 - 条形阴影边框
- jira - 使用nodejs从atlassian连接应用程序插件调用jira cloud api时出现问题
- ubuntu - Can I delete events.out.tfevents.XXXXXXXXXX.computer_name files from training folder
- mongodb - Remove mongodb array keys except first index
- sql - Count Distinct over partition by sql
- wordpress - 在 Instagram 上分享 + 本地主机分享
- angular - 通过在Angular 6中设置环境变量的动态网址?
- c++ - 通过调用 glDrawElements() 绘制很多三角形变得很慢?
- javascript - 有没有办法在使用 iggrid saveChanges 事件发送到控制器时从发布数据中排除特定列?