JGroups:发现 num_discovery_runs 不工作

JGroups: Discovery num_discovery_runs is not working

我有自己的 Protocol[] 看起来像这样

  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()};

但出于某种原因,如果将 num_discovery_runs 设置为 10,发现将不再起作用并且不再响应。当 num_discovery_run 设置为 3 时,它 运行 是发现,但只有一次。

它没有运行它三遍。它只是在 3000 毫秒后发现没有可用的协调器并创建了自己的协调器(我想通过更多发现 运行s 来防止这种情况)。

当前代码如下所示

channel = new JChannel(prot_stack).setReceiver(this).addChannelListener(this);
channel.setDiscardOwnMessages(true);
channel.setName("RFID Cluster");
channel.connect("RFID Cluster");

我做错了什么?为什么我不能将发现数量 运行s 更改为高于 3(这甚至不起作用)。

根据 documentation 这应该可行。

您发现了一个错误!

我创建了 [1],修复了它并将更改提交给 master。您可以通过从源代码创建 JAR 来尝试修复(ant jarmvn package 即可),或者等待 4.1.5 发布。这将需要几周时间。

解决方法:不要将 num_discovery_runs 设置为大于 1 的值。

[1] https://issues.jboss.org/browse/JGRP-2375