Сбои запроса 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();

Я использую последнюю стабильную версию Cassandra 2.2.3 с драйвером Datastax:

<dependency>
        <groupId>com.datastax.cassandra</groupId>
        <artifactId>cassandra-driver-core</artifactId>
        <version>2.1.8</version>
</dependency>

Любые указатели высоко ценятся

Спасибо Масти


person im2kul    schedule 12.11.2015    source источник
comment
Попробуйте прочитать datastax.com/dev/blog/cassandra-error- правильная обработка   -  person phact    schedule 12.11.2015
comment
Я прочитал ту статью, и, на мой взгляд, это не дает ответа на вопрос. Хотя я понимаю, что он не может подключиться, мой сценарий заключается в том, что кластер может быть построен и может подключиться (может распечатать узел, к которому он подключен). Однако, когда я делаю запрос (простой запрос выбора), он терпит неудачу с ошибкой раньше. Может быть, из-за потери связи?   -  person im2kul    schedule 12.11.2015


Ответы (1)


Вот решение: проблема была с

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

Здесь у меня есть только один узел в облаке AWS для тестирования моего адаптера, и это сбрасывает Кассандру. Удаление решает проблему

Спасибо

person im2kul    schedule 12.11.2015