Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-2194

updateClusterClients does not support multiple tcp / nio transports

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • None
    • JBoss A-MQ 6.2.1, JBoss A-MQ 6.3
    • broker, failover
    • None
    • Hide
      • Set up a small network of brokers with transport connectors on each like:
              <transportConnectors>
                  <transportConnector name="client1" uri="nio+ssl://node11.redhat.com:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" updateClusterClients="true" />
                  <transportConnector name="client2" uri="nio://node11.redhat.com:62626?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" updateClusterClients="true" />
                  <transportConnector name="broker2broker" uri="tcp://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
              </transportConnectors>
      
      • Set up a test with non-ssl clients configured with a failover URI like so"
      failover://(tcp://node11.redhat.com:62626,tcp://node12.redhat.com:62626,tcp://node13.redhat.com:62626)
      
      • One by one, restart the brokers in the cluster

      Eventually, all of the clients will be reconnecting and generating certificate errors in the broker logs.

      Show
      Set up a small network of brokers with transport connectors on each like: <transportConnectors> <transportConnector name= "client1" uri= "nio+ssl://node11.redhat.com:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" rebalanceClusterClients= "true" updateClusterClientsOnRemove= "true" updateClusterClients= "true" /> <transportConnector name= "client2" uri= "nio://node11.redhat.com:62626?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" rebalanceClusterClients= "true" updateClusterClientsOnRemove= "true" updateClusterClients= "true" /> <transportConnector name= "broker2broker" uri= "tcp://0.0.0.0:61618?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" /> </transportConnectors> Set up a test with non-ssl clients configured with a failover URI like so" failover: //(tcp://node11.redhat.com:62626,tcp://node12.redhat.com:62626,tcp://node13.redhat.com:62626) One by one, restart the brokers in the cluster Eventually, all of the clients will be reconnecting and generating certificate errors in the broker logs.

      Consider the following use case:

      • A network of brokers for load-balancing
      • A "plain" (tcp or nio) openwire connection on each broker
      • A second "secure" (ssl or nio+ssl) openwire connector on each broker
      • A mix of SSL and non-ssl clients
      • rebalanceClusterClients, updateClusterClients, and updateClusterClientsOnRemove set true on both transport connectors.

      In the above case, depending on the order the connectors are listed, after topology updates we end up with all clients trying either to connect to the non-ssl connector (if listed first) or to the ssl connector (if listed first), with the result that one or the other set of clients continually fails to reconnect to the broker.

      Ideally, the clusterUpdates should contain both broker name and connector identification information, so that we can add a updateClusterFilter expression that ignores ssl connectors on the plain transport and ignores plain connectors on the ssl transport. A generic solution like this would also allow for configuring multiple connectors for other tuning options, as well.

            Unassigned Unassigned
            rhn-support-dhawkins Duane Hawkins
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: