我正在使用Cassandra 1.2.11。我創建了以下列族:Cassandra rpc_timeout
CREATE TABLE subscribers_all (
subscriber text,
status int,
package text,
SW_ON timestamp,
S_NUMBER text,
USER_NAME text,
updated_date timestamp,
PRIMARY KEY (subscriber)
);
我創建了一個Java應用程序來刪除比一個給定的日期和時間舊的updated_date所有條目。我在while循環中使用了以下select語句:
select * from subscribers_all where token(subscriber) > token(?) limit 100;
我開始了這個程序。它運作良好。然後我意識到我給了一個錯誤的時間戳,所以我殺了程序。我沒有附加任何關機掛鉤,因此羣集沒有正常關閉。 我再次啓動了程序,並帶有正確的時間戳。卡桑德拉司機拋出下面的錯誤(我試了好幾次):
com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency ONE (1 responses were required but only 0 replica responded)
所以,我決定測試選擇在cqlsh。即使是下面這個簡單的選擇是不工作:
select subscriber from subscribers_all limit 1;
它總是拋出這個錯誤:
Request did not complete within rpc_timeout.
當我把在where子句中我選擇,它工作正常。
select * from subscribers_all where subscriber = 'xyz';
我得到了預期的結果。 我試過重新啓動整個cassandra集羣。這沒有幫助。
在日誌文件中,我只看到一個例外,我想對應的時間,當我殺了我的應用程序:
ERROR [Native-Transport-Requests:973721] 2013-12-12 15:08:29,699 ErrorMessage.java (line 210) Unexpected exception during request java.io.IOException: Connection reset by peer
沒有其他異常爲我cqlsh選擇或我試着重新啓動時間我的應用程序。 'nodetool tpstats'顯示我沒有丟棄,也沒有阻止或掛起的消息。
有人提出它可能是'由於節點之間的時間同步'。我驗證了服務器已同步。
我啓用了跟蹤功能,並且我再次執行了選擇和沒有選擇的選擇。 以下是跟蹤顯示的確定選擇(希望我可以粘貼網址)。
這裏的一小部分是什麼軌跡顯示了與「LIMIT 1」查詢:
我幾乎可以肯定,這是一個錯誤,但沒有任何解決它? 我拒絕放棄列家庭並重新創建它:) 這不是一個可行的解決方案,當上線。
什麼是追蹤顯示在查詢中的作品select * from subscribers_all where subscriber ='xyz';' –
我已經更新了我的問題。 – Anakin001