Qpid
  1. Qpid
  2. QPID-5078

consumers not notified of messages if another consumer with selector/filter doesn't want it

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.24
    • Fix Version/s: 0.24
    • Component/s: C++ Broker
    • Labels:
      None

      Description

      E.g. run

        drain "q; {create:always, link:{selector:\"colour = 'red'\"}}" -f
      

      and in another terminal:

        drain "q; {create:always, link:{selector:\"colour = 'blue'\"}}" -f
      

      then:

        for i in `seq 1 5`; do spout --content "red-$i" -P colour=red q; done
        for i in `seq 1 5`; do spout --content "blue-$i" -P colour=blue q; done
        for i in `seq 6 10`; do spout --content "red-$i" -P colour=red q; done
      

      Expect first drain to see all 10 'red' messages, second drain to see all 5 'blue' messages but in practice this doesn't (always) happen. The message are on the queue but the consumers are not always notified of their existence.

        Activity

        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open Resolved Resolved
        5h 21m 1 Gordon Sim 16/Aug/13 23:15
        Resolved Resolved Closed Closed
        22d 15h 21m 1 Justin Ross 08/Sep/13 14:37
        Justin Ross made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Hide
        Justin Ross added a comment -
        Show
        Justin Ross added a comment - Released in Qpid 0.24, http://qpid.apache.org/releases/qpid-0.24/index.html
        Gordon Sim made changes -
        Fix Version/s 0.24 [ 12324776 ]
        Fix Version/s 0.25 [ 12324777 ]
        Hide
        ASF subversion and git services added a comment -

        Commit 1515483 from Gordon Sim in branch 'qpid/branches/0.24'
        [ https://svn.apache.org/r1515483 ]

        QPID-5078: ensure listeners are always notified if a message was left on the queue (merged from r1514907)

        Show
        ASF subversion and git services added a comment - Commit 1515483 from Gordon Sim in branch 'qpid/branches/0.24' [ https://svn.apache.org/r1515483 ] QPID-5078 : ensure listeners are always notified if a message was left on the queue (merged from r1514907)
        Hide
        Justin Ross added a comment - - edited
        Show
        Justin Ross added a comment - - edited Reviewed by Andrew. Approved for 0.24. http://qpid.2158936.n2.nabble.com/Suggested-for-inclusion-in-0-24-tt7597085.html
        Hide
        Andrew Stitcher added a comment -

        Reviewed for 0.24 - I see no problem in backporting this - low risk, important fix.

        Show
        Andrew Stitcher added a comment - Reviewed for 0.24 - I see no problem in backporting this - low risk, important fix.
        Gordon Sim made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Hide
        ASF subversion and git services added a comment -

        Commit 1514907 from Gordon Sim in branch 'qpid/trunk'
        [ https://svn.apache.org/r1514907 ]

        QPID-5078: ensure listeners are always notified if a message was left on the queue

        Show
        ASF subversion and git services added a comment - Commit 1514907 from Gordon Sim in branch 'qpid/trunk' [ https://svn.apache.org/r1514907 ] QPID-5078 : ensure listeners are always notified if a message was left on the queue
        Hide
        Gordon Sim added a comment -
        Show
        Gordon Sim added a comment - See https://reviews.apache.org/r/13619/ for suggested fix
        Gordon Sim made changes -
        Field Original Value New Value
        Description E.g. run

          drain "q; {create:always, link:{selector:\"colour = 'red'\"}}" -f

        and in another terminal:

          drain "q; {create:always, link:{selector:\"colour = 'blue'\"}}" -f

        then:

          for i in `seq 1 5`; do spout --content "red-$i" -P colour=red q; done
          for i in `seq 1 5`; do spout --content "blue-$i" -P colour=blue q; done
          for i in `seq 6 10`; do spout --content "red-$i" -P colour=red q; done
         
        Expect first drain to see all 10 'red' messages, second drain to see all 5 'blue' messages but in practice this doesn't (always) happen. The message are on the queue but the consumers are not always notified of their existence.
        E.g. run

        {noformat}
          drain "q; {create:always, link:{selector:\"colour = 'red'\"}}" -f
        {noformat}

        and in another terminal:

        {noformat}
          drain "q; {create:always, link:{selector:\"colour = 'blue'\"}}" -f
        {noformat}

        then:

        {noformat}
          for i in `seq 1 5`; do spout --content "red-$i" -P colour=red q; done
          for i in `seq 1 5`; do spout --content "blue-$i" -P colour=blue q; done
          for i in `seq 6 10`; do spout --content "red-$i" -P colour=red q; done
        {noformat}
        Expect first drain to see all 10 'red' messages, second drain to see all 5 'blue' messages but in practice this doesn't (always) happen. The message are on the queue but the consumers are not always notified of their existence.
        Gordon Sim created issue -

          People

          • Assignee:
            Gordon Sim
            Reporter:
            Gordon Sim
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development