3

Pycassa を介して Cassandra から行を取得すると、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=[]>]
4

1 に答える 1

3

multiprocessing を使用している場合、pycassa.pool は multiprocessing-safe ではありません

同様の状況で「TApplicationException: get_slice failed: unknown result」を受け取っていました。複数の pycassa.pools を作成し、プロセスごとに 1 つのプールを作成しましたが、問題は解決したようです。

ドキュメントには、マルチプロセッシングとプールについてアドバイスする特別なページがありますが、1 つのプールでマルチプロセスを実行した場合に発生するエラーは記載されていません。これだと思います!

于 2012-12-12T20:56:39.503 に答える