Java JGroups:Discovery num\u Discovery\u运行不工作
我有自己的Java JGroups:Discovery num\u Discovery\u运行不工作,java,jgroups,Java,Jgroups,我有自己的协议[],看起来像这样 Protocol[] prot_stack = { new UDP(), new PING() .setValue("num_discovery_runs", 10) .setValue("stagger_timeout", 1500)
协议[]
,看起来像这样
Protocol[] prot_stack = {
new UDP(),
new PING()
.setValue("num_discovery_runs", 10)
.setValue("stagger_timeout", 1500)
.setValue("async_discovery", true)
.setValue("async_discovery_use_separate_thread_per_request", true)
.setValue("discovery_rsp_expiry_time", 5000),
new MERGE3(),
new FD_SOCK(),
new FD_ALL(),
new VERIFY_SUSPECT(),
new BARRIER(),
new NAKACK2(),
new UNICAST3(),
new STABLE(),
new GMS(),
new UFC(),
new MFC(),
new FRAG2()};
channel = new JChannel(prot_stack).setReceiver(this).addChannelListener(this);
channel.setDiscardOwnMessages(true);
channel.setName("RFID Cluster");
channel.connect("RFID Cluster");
但由于某种原因,如果将num\u discovery\u runs
设置为10,则发现将不再工作,也不再响应。当num\u discovery\u run
设置为3时,它将运行发现,但只运行一次
它不会运行三次。它只是在3000毫秒后发现没有可用的协调器,并创建了自己的协调器(我希望通过更多的发现运行来防止这种情况)
当前代码如下所示
Protocol[] prot_stack = {
new UDP(),
new PING()
.setValue("num_discovery_runs", 10)
.setValue("stagger_timeout", 1500)
.setValue("async_discovery", true)
.setValue("async_discovery_use_separate_thread_per_request", true)
.setValue("discovery_rsp_expiry_time", 5000),
new MERGE3(),
new FD_SOCK(),
new FD_ALL(),
new VERIFY_SUSPECT(),
new BARRIER(),
new NAKACK2(),
new UNICAST3(),
new STABLE(),
new GMS(),
new UFC(),
new MFC(),
new FRAG2()};
channel = new JChannel(prot_stack).setReceiver(this).addChannelListener(this);
channel.setDiscardOwnMessages(true);
channel.setName("RFID Cluster");
channel.connect("RFID Cluster");
我做错了什么?为什么我不能将发现运行的数量更改为高于3(这甚至不起作用)
根据测试结果,这应该有效。您发现了一个bug
我已经创建了[1],修复了它,并将更改提交到master
。您可以通过从源代码创建JAR来尝试修复(antjar
或mvn包
将完成这项工作),或者等待4.1.5发布。这需要几周的时间
解决方法:不要将num\u discovery\u runs
设置为大于1
的值
[1] 谢谢。有我可以加入的邮件列表吗?是的,请点击jgroups.org上的链接