Description
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.
Attachments
Issue Links
- links to