【发布时间】:2016-02-13 05:57:41
【问题描述】:
我无法对 Cassandra 节点进行查询。我能够连接到集群并进行连接。但是,在进行查询时,它会失败
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (no host was tried)
at com.datastax.driver.core.RequestHandler.reportNoMoreHosts(RequestHandler.java:217)
at com.datastax.driver.core.RequestHandler.access$1000(RequestHandler.java:44)
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.sendRequest(RequestHandler.java:276)
at com.datastax.driver.core.RequestHandler.startNewExecution(RequestHandler.java:117)
at com.datastax.driver.core.RequestHandler.sendRequest(RequestHandler.java:93)
at com.datastax.driver.core.SessionManager.executeAsync(SessionManager.java:127)
... 3 more
这是我连接到集群的方式:
List<String> servers = config.getCassandraServers();
Builder builder = Cluster.builder();
for (String server : servers) {
builder.addContactPoints(server);
}
PoolingOptions opts = new PoolingOptions();
opts.setCoreConnectionsPerHost(HostDistance.LOCAL, opts.getCoreConnectionsPerHost(HostDistance.LOCAL));
// setup socket exceptions
SocketOptions socketOpts = new SocketOptions();
socketOpts.setReceiveBufferSize(1048576);
socketOpts.setSendBufferSize(1048576);
socketOpts.setTcpNoDelay(false);
cluster = builder.withSocketOptions(socketOpts)
.withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
.withPoolingOptions(opts)
.withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
.withLoadBalancingPolicy(new DCAwareRoundRobinPolicy(getColo(config)))
.build();
cluster.connect();
我正在使用最新稳定版本的 Cassandra 2.2.3 和 Datastax 驱动程序:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.8</version>
</dependency>
任何指针都非常感谢
谢谢 马斯蒂
【问题讨论】:
-
我读了那篇文章,但我认为这似乎没有回答这个问题。虽然我知道它无法连接,但我的情况是集群可以构建并且能够连接(能够打印它连接到的节点)。但是,当我进行查询(简单的选择查询)时,它会因之前的错误而失败。难道是因为它失去了连接?
标签: cassandra cassandra-2.0 datastax datastax-java-driver