Java 当群集中有两个节点时,Jboss EAP 7.1.6故障切换不工作

Java 当群集中有两个节点时,Jboss EAP 7.1.6故障切换不工作,java,wildfly,failover,jboss-eap-7,Java,Wildfly,Failover,Jboss Eap 7,当故障转移测试只有两个节点时,我正在调查一个与故障转移测试相关的问题。下面是一个场景 测试步骤: 我们有两个节点集群,让我们将它们作为node1和node2 最初,node1处于启动和运行状态,但node2处于关闭状态,客户端连接到node1 一旦node2完全启动,我们就停止了node1 在这个场景中,客户端被冻结,用户从系统中注销 调查步骤: 节点2启动时,在其完全启动(部分启动)之前,节点发现已将节点2标记为失败目标,并将其放入缓存对象中 即使node2完全启动,它也不会从缓存中删除 当n

当故障转移测试只有两个节点时,我正在调查一个与故障转移测试相关的问题。下面是一个场景

测试步骤:

  • 我们有两个节点集群,让我们将它们作为node1和node2
  • 最初,node1处于启动和运行状态,但node2处于关闭状态,客户端连接到node1
  • 一旦node2完全启动,我们就停止了node1
  • 在这个场景中,客户端被冻结,用户从系统中注销
  • 调查步骤:

  • 节点2启动时,在其完全启动(部分启动)之前,节点发现已将节点2标记为失败目标,并将其放入缓存对象中
  • 即使node2完全启动,它也不会从缓存中删除
  • 当node1停止时,它也被标记为失败的目的地。在这种情况下,两个节点都标记为发现失败
  • 即使发生第二次传递,此失败的目标缓存也未清除。但当我清除缓存时,如下所示。发现成功了
  • 但要实现正确的故障切换,当节点启动并运行时,应该清除JBoss failddestination缓存对象中的内容


    这将两个节点都设置为失败节点和缓存节点,服务器启动时不会清除该节点

    请提供任何建议?请提供任何建议?
            if (discoveryConnections && ! ok) {
                if (failedDestinations != null)
                {
                    failedDestinations.clear();
                }
                Logs.INVOCATION.tracef("EJB discovery provider: all connections marked failed, retrying ...");
                for (EJBClientConnection connection : configuredConnections) {
                    if (! connection.isForDiscovery()) {
                        continue;
                    }
                    URI destination = connection.getDestination();
                    Logs.INVOCATION.tracef("EJB discovery provider: attempting to connect to connection %s", destination);
                    discoveryAttempt.connectAndDiscover(destination, null);
                }
            }