Cassandra / Pycassa: get_slice () / get_indexed_slice () завершается ошибкой с TApplicationException: неизвестный результат - PullRequest
3 голосов
/ 06 марта 2012

При получении строк от Кассандры через Пикассу иногда появляется TApplicationException: get_slice failed: unknown result].

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

Cassandra Версия 1.0.7 и вывод из журнала следующий:

[DEBUG 17:45:58,253 Thrift transport error occurred during processing of message.
org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
    at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378)
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204)
    at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2877)
    at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:187)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
DEBUG 17:45:58,315 logged out: #<User allow_all groups=[]>]

1 Ответ

3 голосов
/ 13 декабря 2012

Если вы используете многопроцессорность, pycassa.pool не безопасен для многопроцессорности .

Я получал «TApplicationException: get_slice fail: неизвестный результат» при похожих обстоятельствах. Я создал несколько pycassa.pools, по одному пулу на процесс, и проблема кажется решенной.

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

...