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上的链接