Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-2610

expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.3.0
    • 5.3.1, 5.4.0
    • Broker
    • None
    • all

    Description

      The Memory usage limits are shared for a filependingmessagecursor and a queue. To have the cursor limit kick in first the usage portion needs to be reduced to below 70% as in: policy.setCursorMemoryHighWaterMark(50); for the destination.
      This causes message references to be flushed to disk when the memory utilization reaches 50% ensuring that the memory usage limit for the queue of 70% is not met.

      However, expiry processing with no consumers, needs to go directly to the cursor to examine messages (as none are paged in for dispatch) and this contract is problematic at the moment as there is no way to manage the message reference count via the cursor api for this use case. PageInList is promising but not complete.

      Attachments

        1. UnlimitedEnqueueTest.java
          5 kB
          Gary Tully

        Activity

          People

            gtully Gary Tully
            gtully Gary Tully
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: