2015-11-12 210 views
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

+0

嘗試閱讀http://www.datastax.com/dev/blog/cassandra-error-handling-done-right – phact

+2

我讀的文章,似乎並不回答這個問題在我看來。雖然我知道它無法連接,但我的方案是羣集可以構建並能夠連接(能夠打印它所連接的節點)。但是,當我執行查詢(簡單選擇查詢)時,它會失敗並返回錯誤。難道是因爲它失去了連接? – im2kul

回答

1

這裏是解決:問題是與

.withLoadBalancingPolicy(new DCAwareRoundRobinPolicy(getColo(config))) 

在這裏,我只有在AWS雲中的單個節點來測試我的適配器,它被扔卡桑德拉關閉。去除解決問題

感謝