Исключение составляет Cassandra Thrift API. Плохая версия в readMessageBegin

Я пытаюсь сделать клиент Cassandra и выполнить запрос CQL с помощью этого клиента.

public Cassandra.Client getClient(String node, Integer port) throws TTransportException{
    TTransport tr =new TSocket(node, port);
    TProtocol proto = new TBinaryProtocol(tr);
    Cassandra.Client client = new Cassandra.Client(proto); 
    tr.open();
    return client;
}

Я могу создать клиента, но затем использовать его для вызова любых методов, даже:

KsDef keyspaceReturned =this.client.describe_keyspace(KEYSPACE)

он продолжает давать следующее исключение:

org.apache.thrift.protocol.TProtocolException: Bad version in readMessageBegin
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:223)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69)
at org.apache.cassandra.thrift.Cassandra$Client.recv_set_keyspace(Cassandra.java:608)
at org.apache.cassandra.thrift.Cassandra$Client.set_keyspace(Cassandra.java:595)
at com.indigo.deep.ws.persistence.cassandra.PersistToCassandraImpl.getPages(PersistToCassandraImpl.java:71)
at com.indigo.deep.ws.rest.ApplicationResource.pages(ApplicationResource.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

Я не могу понять, на какую версию жалуется. При проведении онлайн-исследований было высказано предположение, что это может быть связано с несоответствием транспорта в рамке и без рамки на сервере и клиенте. Я пытался изменить

thrift_framed_transport_size_in_mb: 0

в cassandra.yaml как в моем коде, чтобы получить клиента,

TTransport tr =new TSocket(node, port);
TProtocol proto = new TBinaryProtocol(tr)

TSocket используется, и установка значения в ноль для свойства размера framed_transport должна отключить TFramedTransport и включить TSocket.

При использовании TSocket я получаю еще одно исключение:

cassandra org.apache.thrift.TApplicationException: describe_keyspace failed: out of sequence response.

Информация о версии:

[cqlsh 5.0.1 | Кассандра 3.0.9 | CQL spec 3.4.0 | Собственный протокол v4] Maven Dependency:

<dependency>
    <groupId>org.apache.cassandra</groupId>
    <artifactId>cassandra-all</artifactId>
    <version>3.0.9</version>
</dependency>

В конце концов, я хочу выполнить как:

String query ="Select * from pages";
client.execute_cql_query(ByteBuffer.wrap(query.getBytes("UTF-8")), Compression.NONE);

и обработать результаты.

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

0 ответов

Другие вопросы по тегам