2016-06-08 59 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