2012-03-06 12 views
3

Pycassa経由でCassandraから行を取得するときは、時にはTApplicationException: get_slice failed: unknown result]となります。Cassandra/Pycassa:get_slice()/ get_indexed_slice()がTApplicationExceptionで失敗する:不明な結果

この例外を再現することはできません。また、この問題に関するドキュメントを見つけることもできません。現在、私は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

あなたはcassandraログで何を見ていますか?そしてどのバージョンのcassandraですか? – sdolgy

+0

@sdolgy:私は上記の質問を更新しました! –

+0

あなたのpycassaコンソールログとあなたのキースペースは何ですか?(cassandra-cliを実行して、describe ksName;を入力してください) –

答えて

3

あなたはマルチプロセッシング、pycassa.pool is not multiprocessing-safeを使用している場合。

同様の状況で、「TApplicationException:get_slice failed:unknown result」というメッセージが表示されていました。私は複数のpycassa.poolsを作成しました。プロセスごとに1つのプールがあり、問題は解決したようです。

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

関連する問題