Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-9233

pageSizeBytes/pageLimitBytes combination can cause "Address is full"

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • AMQ 7.12.0.GA
    • broker-core
    • None

      There is an edge case where adjusting pageSizeBytes can cause "Address is full" errors, even though the address is not full.

      Do we need to enforce that pageSizeBytes <= pageLimitBytes?

      Reproducer steps:

      Step 1: configure pageSizeBytes == pageLimitBytes == 1mb:

      $ cat my.broker.properties 
      addressSettings."FOO".pageSizeBytes=1048576
      addressSettings."FOO".pageLimitBytes=1048576
      addressSettings."FOO".maxSizeBytes=1048576
      addressSettings."FOO".pageFullMessagePolicy=FAIL
      addressConfigurations."FOO".routingTypes=MULTICAST
      addressConfigurations."FOO".queueConfigs."FOO".name=FOO
      addressConfigurations."FOO".queueConfigs."FOO".address=FOO
      addressConfigurations."FOO".queueConfigs."FOO".routingType=MULTICAST
      

      Step 2: run broker

      bin/artemis run --properties my.broker.properties
      

      Step 3: produce 15 messages

      $ bin/artemis producer --user admin --password admin --destination topic://FOO --message-count 15 --message-size 100000 --protocol amqp
      

      Step 4: observe paging started on the destination (but the page size is 328kb, can hold more messages)

      INFO  [org.apache.activemq.artemis.core.server] AMQ222038: Starting paging on address 'FOO'; size=1107003 bytes (11 messages); maxSize=1048576 bytes (-1 messages); globalSize=1107003 bytes (11 messages); globalMaxSize=1073741824 bytes (-1 messages);
      

      Step 5: stop broker, increase page size

       cat my.broker.properties 
      addressSettings."FOO".pageSizeBytes=4048576
      ...
      

      Step 6: run broker, observe logs show paging warning

      2024-06-25 15:23:47,135 WARN  [org.apache.activemq.artemis.core.server] AMQ224123: Address FOO has more pages than allowed. System currently has 1 pages, while the estimated max number of pages is 0 based on the page-limit-bytes (1048576) / page-size (4048576)
      

      Step 7: try to produce a message, address full

      WARN  [org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback] AMQ229102: Address "FOO" is full.
      

              gaohoward Howard Gao
              rhn-support-shiggs Stephen Higgs
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: