2016-06-08 38 views
1

我在三節點Disque集羣上遇到複製問題,這似乎很奇怪,因爲用例相當典型,所以完全有可能我做錯了什麼。基本3節點Disque集羣上的複製問題

這是如何在本地重現:

# relevant disque info 
disque_version:1.0-rc1 
disque_git_sha1:0192ba7e 
disque_git_dirty:0 
disque_build_id:b02910aa5c47590a 

開始3個端口9001,9002和9003 DISQUE節點,然後對端口9002和9003服務器的相遇與9001

127.0.0.1:9002> CLUSTER MEET 127.0.0.1 9001 #=> OK 

127.0.0.1:9003> CLUSTER MEET 127.0.0.1 9001 #=> OK 

如預期的那樣,HELLO報告所有三個節點的相同數據。

127.0.0.1:9003> hello 
1) (integer) 1 
2) "e93cbbd17ad12369dd2066a55f9d4c51be9c93dd" 
3) 1) "b61c63e8fd0c67544f895f5d045aa832ccb47e08" 
    2) "127.0.0.1" 
    3) "9001" 
    4) "1" 
4) 1) "b32eb6501e272a06d4c20a1459260ceba658b5cd" 
    2) "127.0.0.1" 
    3) "9002" 
    4) "1" 
5) 1) "e93cbbd17ad12369dd2066a55f9d4c51be9c93dd" 
    2) "127.0.0.1" 
    3) "9003" 
    4) "1" 

一個進行排隊作業成功,但作業不顯示上的其他節點要麼QLENQPEEK

127.0.0.1:9001> addjob myqueue body 1 #=> D-b61c63e8-IFA29ufvL37FRVjVVWisbO/x-05a1 
127.0.0.1:9001> qlen myqueue   #=> 1 

127.0.0.1:9002> qlen myqueue   #=> 0 
127.0.0.1:9002> qpeek myqueue 1  #=> (empty list or set) 

127.0.0.1:9003> qlen myqueue   #=> 0 
127.0.0.1:9003> qpeek myqueue 1  #=> (empty list or set) 

當明確設置比節點的量越高複製值,DISQUE失敗並NOREPL正如人們所期望的2的顯式的複製水平的成功,但工作仍然無處可在節點9002見過和9003.無論我添加作業的節點如何,都會發生相同的行爲。

我的理解是調用ADDJOB時(除非明確使用ASYNC)的複製發生同步,但它似乎沒有正常工作,該測試套件傳入master分支,所以我在這裏打在牆上,將不得不挖掘源代碼,任何幫助將不勝感激!

回答

0

該作業被複制,但它只被排入一個節點。嘗試殺死第一個節點,以查看排在另一個節點上的作業。

+0

剛剛嘗試過,殺死'9001'節點沒有將任務排入其他任何地方:( – pote

+0

不過,也許我的問題是一個不同的問題然後(症狀是取得作業的進程長時間保持阻塞而沒有接收任何工作),如有必要,我會繼續調試和更新。 – pote