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

With a transport address configred for 0.0.0.0 and the default publishedAddressPolicy, rebalancing initially works, then fails after a broker restart

    XMLWordPrintable

Details

    • Bug
    • Resolution: Not a Bug
    • Major
    • None
    • JBoss A-MQ 6.3
    • broker
    • None
    • Workaround Exists
    • Hide

      Setting a non-default publishedHostStrategy seems to work-around the issue:

                 <transportConnector name="openwire" uri="tcp://0.0.0.0:61611?maximumConnections=5000&amp;wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true">
                   <publishedAddressPolicy>
                     <publishedAddressPolicy publishedHostStrategy="HOSTNAME" />
                   </publishedAddressPolicy>
                 </transportConnector>
      
      Show
      Setting a non-default publishedHostStrategy seems to work-around the issue: <transportConnector name= "openwire" uri= "tcp://0.0.0.0:61611?maximumConnections=5000&amp;wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true" updateClusterClients= "true" rebalanceClusterClients= "true" updateClusterClientsOnRemove= "true" > <publishedAddressPolicy> <publishedAddressPolicy publishedHostStrategy= "HOSTNAME" /> </publishedAddressPolicy> </transportConnector>
    • Hide

      1. Configure three brokers with a single openwire "client" connector configured for rebalancing and a separate connector for broker-to-broker communications:

              <transportConnectors>
                  <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
                 <transportConnector name="openwire" uri="tcp://0.0.0.0:61611?maximumConnections=5000&amp;wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"/>
                 <transportConnector name="broker2broker" uri="tcp://10.0.0.221:61622?maximumConnections=20&amp;wireFormat.maxFrameSize=104857600" />
              </transportConnectors>
      

      2. Start all three brokers.
      3. Connect a set of clients with a failover URI set to the first broker only (makes it easier to see the issue)

      failover://(tcp://node11.dhawkins.redhat.com:61611)
      

      4. Observe that the clients are successfully rebalanced across the three nodes.
      5. Perform a rolling restart of all three brokers.
      6. Observe that the clients get into a state where they cannot reconnect
      7. Restart the clients
      8 Observe that the clients still do not reconnect

      Show
      1. Configure three brokers with a single openwire "client" connector configured for rebalancing and a separate connector for broker-to-broker communications: <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> <transportConnector name= "openwire" uri= "tcp://0.0.0.0:61611?maximumConnections=5000&amp;wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true" updateClusterClients= "true" rebalanceClusterClients= "true" updateClusterClientsOnRemove= "true" /> <transportConnector name= "broker2broker" uri= "tcp://10.0.0.221:61622?maximumConnections=20&amp;wireFormat.maxFrameSize=104857600" /> </transportConnectors> 2. Start all three brokers. 3. Connect a set of clients with a failover URI set to the first broker only (makes it easier to see the issue) failover: //(tcp://node11.dhawkins.redhat.com:61611) 4. Observe that the clients are successfully rebalanced across the three nodes. 5. Perform a rolling restart of all three brokers. 6. Observe that the clients get into a state where they cannot reconnect 7. Restart the clients 8 Observe that the clients still do not reconnect

    Description

      If a cluster of brokers is configured to rebalance cluster clients, as below:

      <transportConnector name="openwire" uri="tcp://0.0.0.0:61611?maximumConnections=5000&amp;wireFormat.maxFrameSize=104857600&amp;transport.keepAlive=true" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"/>
      

      then rebalancing seems to work on the initial broker startup. However; if a rolling restart of the brokers is performed, the clients receive an updated host of "0.0.0.0" for each restarted broker until clients all end up on the last broker to be restarted and finally the clients cannot reconnect at all.

      Restarting the client does not seem to help. Restarting the brokers with a clean data directory and then restarting the client does seem to work.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: