Qpid
  1. Qpid
  2. QPID-3686

Donor/Donee Brokers should not accept connections?

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 0.10
    • Fix Version/s: None
    • Component/s: C++ Broker
    • Environment:

      Description

      TO REPRODUCE:

      Suppose I have three C++ brokers (q1, q2, q3) in a cman/corosync-managed cluster. I have a java client J1. Then:

      t0 - all three brokers are up
      t1 - q1 falls over
      t2 - q1 is restarted; catch up begins with q2 select as donor
      t3 [i] - EITHER J1 starts; it connects to q1 and attempts to create a session
      t3 [ii] - OR J1 starts; it connects to q2 and attempts to create a session
      t3 + 60000 milliseconds - J1 raises SessionException (see attached stack trace)

      It appears that the connection is effectively blocked from doing anything useful while the donor/donee is participating in a catch up.

      Would it be possible to reject connections until such time that the broker is able to fulfill requests (i.e. able to create a JMS sesssion from my client's perspective?)

      1. stacktrace.txt
        1 kB
        Joel Caplin

        Activity

        Joel Caplin created issue -
        Joel Caplin made changes -
        Field Original Value New Value
        Description TO REPRODUCE:

        Suppose I have three C++ brokers (q1, q2, q3) in a cman/corosync-managed cluster. I have a java client J1. Then:

        t0 - all three brokers are up
        t1 - q1 falls over
        t2 - q1 is restarted; catch up begins with q2 select as donor
        t3 (i) - EITHER J1 starts; it connects to q1 and attempts to create a session
        t3 (ii) - OR J1 starts; it connects to q2 and attempts to create a session
        t3 + 60000 milliseconds - J1 raises SessionException (see attached stack trace)

        It _appears_ that the connection is effectively blocked from doing anything useful while the donor/donee is participating in a catch up.

        Would it be possible to reject connections until such time that the broker is able to fulfill requests (i.e. able to create a JMS sesssion from my client's perspective?)


        TO REPRODUCE:

        Suppose I have three C++ brokers (q1, q2, q3) in a cman/corosync-managed cluster. I have a java client J1. Then:

        t0 - all three brokers are up
        t1 - q1 falls over
        t2 - q1 is restarted; catch up begins with q2 select as donor
        t3 [i] - EITHER J1 starts; it connects to q1 and attempts to create a session
        t3 [ii] - OR J1 starts; it connects to q2 and attempts to create a session
        t3 + 60000 milliseconds - J1 raises SessionException (see attached stack trace)

        It _appears_ that the connection is effectively blocked from doing anything useful while the donor/donee is participating in a catch up.

        Would it be possible to reject connections until such time that the broker is able to fulfill requests (i.e. able to create a JMS sesssion from my client's perspective?)


        Joel Caplin made changes -
        Attachment stacktrace.txt [ 12507438 ]
        Joel Caplin made changes -
        Status Open [ 1 ] Closed [ 6 ]
        Resolution Won't Fix [ 2 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            Joel Caplin
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development