Невозможно подключиться к Cassandra db через Kundera в игре! фреймворк

Я получаю следующую ошибку, когда запускаю свое приложение через консоль SBT в Intellij IDEA.

[info] play - Application started (Dev)
[error] c.i.c.c.t.ThriftClientFactory - Error during pool creation: caused by 
org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
    at net.dataforte.cassandra.pool.ConnectionPool.init(ConnectionPool.java:345) ~[cassandra-connection-pool-0.7.1.jar:na]
    at net.dataforte.cassandra.pool.ConnectionPool.<init>(ConnectionPool.java:127) ~[cassandra-connection-pool-0.7.1.jar:na]
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:146) ~[kundera-cassandra-2.5.jar:na]
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) [kundera-core-2.5.jar:na]
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) [kundera-core-2.5.jar:na]
Caused by: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
    at org.apache.thrift.transport.TFastFramedTransport.readFrame(TFastFramedTransport.java:144) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.transport.TFastFramedTransport.read(TFastFramedTransport.java:134) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) ~[libthrift-0.7.0.jar:0.7.0]
[error] application - 

! Internal server error, for (GET) [/] ->

java.lang.ExceptionInInitializerError: null
    at models.process.EmployeeProcessImpl$.<init>(EmployeeProcess.scala:82) ~[myEntities.jar:na]
    at models.process.EmployeeProcessImpl$.<clinit>(EmployeeProcess.scala) ~[myEntities.jar:na]
    at controllers.Application$.<init>(Application.scala:168) ~[na:na]
    at controllers.Application$.<clinit>(Application.scala) ~[na:na]
    at Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:107) ~[na:na]
Caused by: com.impetus.kundera.loader.ClientLoaderException: org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:151) ~[kundera-cassandra-2.5.jar:na]
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) ~[kundera-core-2.5.jar:na]
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) ~[kundera-core-2.5.jar:na]
    at com.impetus.kundera.configure.Configurator.configure(Configurator.java:65) ~[kundera-core-2.5.jar:na]
    at com.impetus.kundera.KunderaPersistence.initializeKundera(KunderaPersistence.java:109) ~[kundera-core-2.5.jar:na]
Caused by: org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
    at net.dataforte.cassandra.pool.ConnectionPool.init(ConnectionPool.java:345) ~[cassandra-connection-pool-0.7.1.jar:na]
    at net.dataforte.cassandra.pool.ConnectionPool.<init>(ConnectionPool.java:127) ~[cassandra-connection-pool-0.7.1.jar:na]
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:146) ~[kundera-cassandra-2.5.jar:na]
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) ~[kundera-core-2.5.jar:na]
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) ~[kundera-core-2.5.jar:na]
Caused by: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)!
    at org.apache.thrift.transport.TFastFramedTransport.readFrame(TFastFramedTransport.java:144) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.transport.TFastFramedTransport.read(TFastFramedTransport.java:134) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) ~[libthrift-0.7.0.jar:0.7.0]
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) ~[libthrift-0.7.0.jar:0.7.0]
[error] application - Error while rendering default error page
scala.MatchError: java.lang.ExceptionInInitializerError (of class java.lang.ExceptionInInitializerError)
    at play.api.GlobalSettings$class.onError(GlobalSettings.scala:148) ~[play_2.11-2.3.0.jar:2.3.0]
    at play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11-2.3.0.jar:2.3.0]
    at play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:76) [play_2.11-2.3.0.jar:2.3.0]
    at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:86) [play_2.11-2.3.0.jar:2.3.0]
    at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:84) [play_2.11-2.3.0.jar:2.3.0]

Пример, с которым я работаю, взят из: http://blog.knoldus.com/2014/06/22/playing-kundera-cassandra/

У меня Игра! 2.4.6 фреймворк с Cassandra 2.2. Что может быть не так с проектом, который не позволяет подключиться к базе данных? Нужно ли мне внести некоторые изменения в версию CQL или Kundera, чтобы моя база данных могла быть подключена? Мой файл persistence.xml выглядит следующим образом:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    https://raw.github.com/impetus-opensource/Kundera/Kundera-2.0.4/kundera-core/src/test/resources/META-INF/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="cassandra_employees">
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <class>models.domains.Employee</class>
        <properties>
            <property name="kundera.nodes" value="localhost" />
            <property name="kundera.port" value="9042" />
            <property name="kundera.keyspace" value="EmployeeExample" />
            <property name="kundera.dialect" value="cassandra" />
            <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />
            <property name="kundera.cache.provider.class" value="com.impetus.kundera.cache.ehcache.EhCacheProvider" />
            <property name="kundera.cache.config.resource" value="/ehcache-test.xml" />
        </properties>
    </persistence-unit>

</persistence>

Скажите, пожалуйста, нужно ли мне внести некоторые изменения, связанные с версией, для Cassandra или CQL, а также в каком файле?


person Vinit Sharma    schedule 15.12.2015    source источник
comment
Что может быть причиной того, что база данных не подключается? Какие еще изменения, связанные с конфигурацией, необходимы для подключения Cassandra db из моей локальной системы. Я установил Play! framework и Cassandra в одной системе, но пока не могу подключить Cassandra db из моего кода. Любая помощь приветствуется.   -  person Vinit Sharma    schedule 16.12.2015
comment
измените порт на 9160, и вы можете удалить свойства kundera.cache.provider.class и kundera.cache.config.resource..   -  person karthik manchala    schedule 16.12.2015
comment
Порт для native_transport_port — 9042 в файле cassandra.yaml. Так 9160 подойдет в таком случае или нет? Также я должен изменить его на 9160 только в файле persistence.xml или также в файле cassandra.yaml?   -  person Vinit Sharma    schedule 16.12.2015
comment
На данный момент отображается следующая ошибка: com.impetus.kundera.KunderaException: All hosts are down. please check servers manully.   -  person Vinit Sharma    schedule 16.12.2015
comment
не меняйте порт в cassandra.yaml.. порт, который использует Кундера, это rpc_port.. просто сделайте start_rpc истинным в вашем cassandra.yaml и установите kundera.port на 9160 в persistence.xml   -  person karthik manchala    schedule 16.12.2015
comment
@karthikmanchala Та же ошибка, которую он показывает, даже после внесения необходимых изменений. Мой native_transport_port сам по себе 9042, и я изменил флаг start_rpc на true, перезапустил свою систему, чтобы перезапустить Cassandra. Но по-прежнему отображается та же ошибка: com.impetus.kundera.KunderaException: All hosts are down. please check servers manully. @karthikmanchala мы можем поговорить по почте или в каком-нибудь чате? Не могли бы вы уделить немного времени своему драгоценному времени?   -  person Vinit Sharma    schedule 16.12.2015


Ответы (1)


используется ниже конфигурации, и он отлично работает в моей системе ..

обновлен cassandra.yaml:
ОТ: start_rpc: false
ДО: start_rpc: true

Persistence.xml: имя единицы
, упомянутое ниже, является случайным и будет использоваться для доступа к этому конкретному сохранению.
имя пространства ключей — это имя таблицы, созданной в cassandra.

<persistence-unit name="persistence">
        <provider>com.impetus.kundera.KunderaPersistence</provider>
        <properties>
            <property name="kundera.nodes" value="localhost" />
            <property name="kundera.port" value="9160" />
            <property name="kundera.keyspace" value="trial1" />
            <property name="kundera.dialect" value="cassandra" />
                <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" />

            <property name="kundera.pool.size.max.active" value="500" />
            <property name="kundera.pool.size.max.total" value="500" />
        </properties>
person Always a newComer    schedule 24.12.2015
comment
Я решил проблему, моя проблема была решена путем внесения некоторых изменений в файл persistence.xml и build.sbt. Я использую версию Cassandra 2.2.4, и мне не удалось сделать резервную копию с помощью nodetool с терминала. Любая идея по этому поводу? Это говорит мне об ошибке как nodetool: Failed to connect to 'localhost:7199' - ConnectException: 'Connection refused'. - person Vinit Sharma; 24.12.2015