Cassandra-unit: java.io.IOException: Сброс соединения по пиру - PullRequest
0 голосов
/ 27 июня 2018

Я опробовал Embedded Cassandra с помощью cassandra-unit и столкнулся со следующим исключением,

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1 (com.datastax.driver.core.ConnectionException: [/127.0.0.1] Unexpected error during transport initialization (com.datastax.driver.core.TransportException: [/127.0.0.1] Unexpected exception triggered (java.io.IOException: Connection reset by peer))))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:195)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:78)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1029)
at com.datastax.driver.core.Cluster.init(Cluster.java:120)
at com.datastax.driver.core.SessionManager.init(SessionManager.java:61)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:416)
at com.datastax.driver.core.SessionManager.executeQuery(SessionManager.java:453)
at com.datastax.driver.core.SessionManager.executeAsync(SessionManager.java:103)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:91)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:83)
at com.me.cc.bma.cassandra.test.main(test.java:30)    

для следующего кода,

import com.datastax.driver.core.Cluster;
import org.cassandraunit.CQLDataLoader;
import org.cassandraunit.dataset.CQLDataSet;
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
import org.apache.cassandra.config.DatabaseDescriptor;
import com.datastax.driver.core.ResultSet;
import static com.datastax.driver.core.Cluster.builder;
import com.datastax.driver.core.Session;


public class Test{

    static Session session;

    public static void main(String args[]) throws Exception {

          EmbeddedCassandraServerHelper.startEmbeddedCassandra(500000L);
          Cluster.Builder clusterBuilder = builder().addContactPoint("127.0.0.1").withClusterName(EmbeddedCassandraServerHelper.getClusterName()).withPort(7010);
          Cluster cluster = clusterBuilder.build();
          session = cluster.newSession();
          try {
               session.execute("CREATE KEYSPACE ci WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}");
               session = cluster.connect("ci");
               session.execute("CREATE TABLE login (l_id int)");
               session.execute("insert into login(l_id) values(1)");
               ResultSet res = session.execute("select * from login");
               System.out.println(res.all());
          }
          catch (Exception ex) {
               ex.printStackTrace();
          }         
     }

}

Версия:

  • cassandra-driver-core: 3.5.0
  • Кассандра-единица: 3.5.0.1

Любое исправление будет оценено!

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Некоторое время назад я столкнулся с той же проблемой и обнаружил, что версии артефактов были неправильными и несовместимыми из-за конфликта в maven.

Я использую следующие версии и отлично работает для меня:

Cassandra-all: 2.1.14 Кассандра-юнит: 2.1.9.2 Кассандра-драйвер-ядро: 3.3.2

Также есть классный способ запустить встроенную Cassandra с помощью аннотации @EmbeddedCassandra, которая делает базовую работу за вас.

Надеюсь, это работает и для вас.

0 голосов
/ 28 июня 2018

изменить порт на 9142 собственный транспортный порт Cassndra по умолчанию.

Cluster.builder().addContactPoint("127.0.0.1").withClusterName(EmbeddedCassandraServerHelper.getClusterName()).withPort(9142);

Также укажите PRIMARY KEY в запросе создания таблицы

...