2
我無法對Cassandra節點執行查詢。我能夠連接到羣集並進行連接。然而,在做了查詢,它失敗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();
我使用卡桑德拉2.2.3的最新穩定版本與Datastax司機:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.1.8</version>
</dependency>
任何指針的高度讚賞
由於 Masti
嘗試閱讀http://www.datastax.com/dev/blog/cassandra-error-handling-done-right – phact
我讀的文章,似乎並不回答這個問題在我看來。雖然我知道它無法連接,但我的方案是羣集可以構建並能夠連接(能夠打印它所連接的節點)。但是,當我執行查詢(簡單選擇查詢)時,它會失敗並返回錯誤。難道是因爲它失去了連接? – im2kul