2015-05-26 62 views
0

[更新]卡桑德拉一致性失敗

前面的語句是非常容易引起誤解,所以我在這裏闡述更多:

我跑了一個測試,通過節儉協議PHP發出查詢和腳本的樣子:

for ($i=0; $i<100; $i++) { 
    $query = "update ns.table set value='before' where key='key$i';"; 
    // randomly select a node and send query 
} 

for ($i=0; $i<100; $i++) { 
    $query = "update ns.table set value='after' where key='key$i';"; 
    // randomly select a node and send query 
} 

表開始是空的,並且僅能在測試後一定行包含「之後」,而最行「之前」包含值。

整個測試過程中我沒有收到任何錯誤。所以不知怎的,第二個循環中的查詢失敗了。

所有的查詢與一致性級別的所有發送,表有2

我卡桑德拉版本複製的因素是DSE 4.6.3,以及集羣共擁有39個節點。

[UPDATE2]

把一個睡眠(3秒)在兩個環路之間的測試現在可以給我正確的結果,與所有表中的行具有「之後」的值之後。

但這仍然令人困惑,因爲對於一致性級別,我期望所有查詢都是事務性的。不需要睡眠功能。

+0

可能有多種原因造成這種情況發生。你能不能更新你的答案,包括:cassandra版本,正在使用的客戶端(及其版本)和你的應用程序的片段? –

+0

你的查詢是什麼樣的?它是一個範圍查詢?寫完後你確定你的選擇正在執行嗎? –

+1

我也懷疑時鐘同步。 – mshuler

回答

1

同步節點的時鐘後問題已解決。

謝謝@mshuler指出。

+0

您是否設置了NTP? – phact