[ https://issues.apache.org/jira/browse/ARTEMIS-4973?focusedWorklogId=930019&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-930019 ]
ASF GitHub Bot logged work on ARTEMIS-4973: ------------------------------------------- Author: ASF GitHub Bot Created on: 13/Aug/24 11:18 Start Date: 13/Aug/24 11:18 Worklog Time Spent: 10m Work Description: gemmellr commented on code in PR #5128: URL: https://github.com/apache/activemq-artemis/pull/5128#discussion_r1715108779 ########## artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java: ########## @@ -291,6 +291,7 @@ public void applySetting(final AddressSettings addressSettings) { if (pageLimitBytes != null && pageSize > 0) { estimatedMaxPages = pageLimitBytes / pageSize; + checkNumberOfPages(); Review Comment: Calling this here would have it act before start() in the constructor case, which seems like it could lead to duplicate logging. In the non-constructor case it seems like it could cause logging every time any [possibly-unrelated] setting changes, which may also not be desirable. Maybe it could check if any of those settings changed? ########## artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java: ########## @@ -343,6 +344,8 @@ private void checkNumberOfPages() { if (!isBelowPageLimitBytes()) { this.pageFull = true; ActiveMQServerLogger.LOGGER.pageFullMaxBytes(storeName, numberOfPages, estimatedMaxPages, pageLimitBytes, pageSize); + } else { + pageLimitReleased(); Review Comment: This seems wrong. Just because it isnt over the file-based paging limit, doesnt mean it isnt still 'full'; there is a separate message-based limit which this would appear to essentially disregard, effectively bypassing it any time this method is called...see related use of `checkPageLimit(long numberOfMessages)` (next method right below this). Issue Time Tracking ------------------- Worklog Id: (was: 930019) Time Spent: 5h 20m (was: 5h 10m) > pageSizeBytes/pageLimitBytes combination can cause Address full > --------------------------------------------------------------- > > Key: ARTEMIS-4973 > URL: https://issues.apache.org/jira/browse/ARTEMIS-4973 > Project: ActiveMQ Artemis > Issue Type: Bug > Components: Broker > Affects Versions: 2.36.0 > Reporter: Howard Gao > Assignee: Howard Gao > Priority: Major > Time Spent: 5h 20m > Remaining Estimate: 0h > > 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. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@activemq.apache.org For additional commands, e-mail: issues-h...@activemq.apache.org For further information, visit: https://activemq.apache.org/contact