2012-03-06 74 views
3

當通過Pycassa從Cassandra獲取行時,有時會出現TApplicationException: get_slice failed: unknown result]Cassandra/Pycassa:get_slice()/ get_indexed_slice()失敗,TApplicationException:Unknown結果

我無法重現此異常,也無法找到有關此問題的任何文檔。現在我將Cassandra作爲單個節點運行(用於開發),並且Exception總是在發生大量併發請求的上下文中引發的。 我想知道這是因爲性能問題還是與其他問題有關(因此,我想知道在生產環境中運行多個節點時它是否會消失)。

卡桑德拉版本是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 2012-03-06 15:49:02

+0

@sdolgy:我已經更新了上面的問題! – 2012-03-06 16:52:41

+0

什麼是您的pycassa控制檯日誌和您的密鑰空間(運行cassandra-cli並鍵入describe ksName;) – 2012-05-28 07:57:36

回答

3

如果使用的是多,pycassa.pool is not multiprocessing-safe

在類似情況下,我收到「TApplicationException:get_slice失敗:未知結果」。我創建了多個pycassa.pools,每個進程一個池,問題就解決了。

該文檔有一個特殊的頁面來向我們提供有關多處理和存儲池的建議,但是它沒有列出如果您使用一個存儲池進行多處理會出現什麼錯誤。我覺得這就是!