Datastax java驱动程序的自动故障转移不适用于OutOfMemoryError节点故障

Datastax java驱动程序的自动故障转移不适用于OutOfMemoryError节点故障,java,cassandra,datastax-java-driver,Java,Cassandra,Datastax Java Driver,我不确定我是否遗漏了什么,但每当cassandra节点由于OutOfMemoryError发生故障时,我的DataStax Java驱动程序没有检测到它,并且仍然向它发送读取请求。如果我手动关闭节点,那么工作正常。我正在为重新连接和重试策略使用默认值: LoadBalancingPolicy loadBalancingPolicy; if (datacenter != null) { loadBalancingPolicy = new DCAwareRou

我不确定我是否遗漏了什么,但每当cassandra节点由于OutOfMemoryError发生故障时,我的DataStax Java驱动程序没有检测到它,并且仍然向它发送读取请求。如果我手动关闭节点,那么工作正常。我正在为重新连接和重试策略使用默认值:

LoadBalancingPolicy loadBalancingPolicy;
        if (datacenter != null) {
            loadBalancingPolicy = new DCAwareRoundRobinPolicy(datacenter);
        } else {
            loadBalancingPolicy = new RoundRobinPolicy();
        }
        loadBalancingPolicy = new TokenAwarePolicy(loadBalancingPolicy);
        loadBalancingPolicy = LatencyAwarePolicy.builder(loadBalancingPolicy).build();

        Builder builder = Cluster.builder().addContactPoints(endpoints).withLoadBalancingPolicy(loadBalancingPolicy);
有什么建议吗

每当cassandra节点由于OutOfMemoryError发生故障时,我的DataStax Java驱动程序都没有检测到它,并且仍然向它发送读取请求

根据您的描述,我推测Cassandra节点是OOM,但没有真正停止(进程没有退出),我怀疑如果它确实停止,驱动程序会检测到它。如果是这样的话,我会说这是服务器的错误行为,事实上Cassandra在OOM上并没有像它应该(或根本没有)那样快地死去,请参阅

也就是说,当卡桑德拉行为不端时,司机应该在保护你方面做得更好,这一点将通过以下方式得到改善