Qpid
  1. Qpid
  2. QPID-4289

[Java Client 0-8/0-9.x] Failover functionality sometimes does not restore the connection

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.16, 0.18, 0.19
    • Fix Version/s: 0.19
    • Component/s: Java Client
    • Labels:
      None

      Description

      Failover functionality on 0-8/0-9.x java client does not restore the connection in the following scenarios:

      • when on initial establishing of the connectivity the connection object is marked as closed after not being able to connect to the first brokers from the broker list but at the end it manages to connect to the one of the following brokers from the broker list
      • there is a racing condition between waking up the connection state waiter and closing the phisical connection on receiving ConnectionClose command from the broker. As result, waiters are notified, new connection is created and closed afterwards.
      • on killing the broker when no IOException is thrown from socket input/output streams but instead -1 is returned by read operation, the failover starts but IoSender thread is left running. As result, on multiple reconnection attempts the thread resources can be exhausted and that can potentially result in OOME.

        Issue Links

          Activity

          Hide
          Alex Rudyy added a comment -

          Attached a patch resolving the failover faunctionality issues on 0-9.x/0-8 path

          Show
          Alex Rudyy added a comment - Attached a patch resolving the failover faunctionality issues on 0-9.x/0-8 path
          Hide
          Alex Rudyy added a comment -

          Robbie,
          Could you please review and commit the patch attached?

          Show
          Alex Rudyy added a comment - Robbie, Could you please review and commit the patch attached?
          Hide
          Alex Rudyy added a comment -

          Attached the final version of the patch

          Show
          Alex Rudyy added a comment - Attached the final version of the patch
          Hide
          Robbie Gemmell added a comment -

          Patch applied.

          Show
          Robbie Gemmell added a comment - Patch applied.
          Hide
          Robbie Gemmell added a comment -

          Reopening due to issues discussed on QPID-4344 which resulted from the changes sin this JIRA.

          Show
          Robbie Gemmell added a comment - Reopening due to issues discussed on QPID-4344 which resulted from the changes sin this JIRA.
          Hide
          Robbie Gemmell added a comment -

          I have applied a patch from Phil Harvey (found on QPID-4344) along with some additional changes of my own to resolve some issues (one caused by the prior changes in this JIRA) which could lead to the client not initiating failover when it should.

          Show
          Robbie Gemmell added a comment - I have applied a patch from Phil Harvey (found on QPID-4344 ) along with some additional changes of my own to resolve some issues (one caused by the prior changes in this JIRA) which could lead to the client not initiating failover when it should.
          Hide
          Robbie Gemmell added a comment -

          Phil, could you review the change please?

          Show
          Robbie Gemmell added a comment - Phil, could you review the change please?
          Hide
          Philip Harvey added a comment -

          I reviewed the changes Robbie made in the light of QPID-4344. All looks good.

          Show
          Philip Harvey added a comment - I reviewed the changes Robbie made in the light of QPID-4344 . All looks good.

            People

            • Assignee:
              Philip Harvey
              Reporter:
              Alex Rudyy
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development