Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-4595

Invoking Receiver::fetch() in a loop for slow producer causes only first <prefetch> messages received

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 0.18
    • Fix Version/s: 0.21
    • Component/s: C++ Client
    • Labels:

      Description

      Description of problem:
      Having a scenario with a slow producer and a consumer periodically running Receiver::fetch() method (for timeout lesser than forever), the consumer gets just first N messages where N is the size of prefetch / capacity, and then nothing - despite there are new messages on the broker.

      Version-Release number of selected component (if applicable):
      qpid-cpp-client*-0.18-14

      How reproducible:
      100%

      Steps to Reproduce:
      1. Unpack attached tarball
      2. make
      3. in one terminal, create queue and start producer (that waits 15 seconds to kick-off consumer first):
      ./setup
      4. in another terminal, start consumer:
      ./read

      Actual results:
      When producer starts to produce messages, the consumer gets just first 10 messages (or whatever is set in receiver.setCapacity()). Later on, despite there are new messages in the queue, receiver does not get any.

      Expected results:
      Receiver gets further messages when some occurr on the broker.

      Additional info:
      Patch proposed

        Attachments

        1. bz913448.patch
          2 kB
          Pavel Moravec
        2. bz913448_reproducer.tar.gz
          2 kB
          Pavel Moravec

          Activity

            People

            • Assignee:
              gsim Gordon Sim
              Reporter:
              pmoravec Pavel Moravec
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 4h
                4h
                Remaining:
                Remaining Estimate - 4h
                4h
                Logged:
                Time Spent - Not Specified
                Not Specified