Qpid
  1. Qpid
  2. QPID-3321

C++ client memory usage increases when acknowledging messages unless client explicitly calls session.sync() every so often

    Details

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

      Description

      Create a C++ client that receives lots and lots of messages. Call session.acknowledge(message) on each message. If you don't call session.sync() periodically, the client application's memory usage will increase over time. Most of the memory allocated appears to be coming from qpid::client::amqp0_10::AcceptTracker::accept(qpid::framing::SequenceNumber id, qpid::client::AsyncSession& session). It looks like the broker doesn't send completions for the message acknowledgements, or if it does, not very frequently.

        Activity

        Andy Goldstein created issue -
        Gordon Sim made changes -
        Field Original Value New Value
        Assignee Gordon Sim [ gsim ]
        Andy Goldstein made changes -
        Summary C++ client memory usage increases when acknowledging messages unless client explicitly calls session.flush() every so often C++ client memory usage increases when acknowledging messages unless client explicitly calls session.sync() every so often
        Description Create a C++ client that receives lots and lots of messages. Call session.acknowledge(message) on each message. If you don't call session.flush() periodically, the client application's memory usage will increase over time. Most of the memory allocated appears to be coming from qpid::client::amqp0_10::AcceptTracker::accept(qpid::framing::SequenceNumber id, qpid::client::AsyncSession& session). It looks like the broker doesn't send completions for the message acknowledgements, or if it does, not very frequently. Create a C++ client that receives lots and lots of messages. Call session.acknowledge(message) on each message. If you don't call session.sync() periodically, the client application's memory usage will increase over time. Most of the memory allocated appears to be coming from qpid::client::amqp0_10::AcceptTracker::accept(qpid::framing::SequenceNumber id, qpid::client::AsyncSession& session). It looks like the broker doesn't send completions for the message acknowledgements, or if it does, not very frequently.
        Gordon Sim made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 0.11 [ 12316272 ]
        Resolution Fixed [ 1 ]
        Justin Ross made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development