activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jaewoong Choi (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (AMQ-4666) Topic persistent message publishing is blocked by hitting 100% of per-destination memory limit if there's any durable subscriber connected but not consuming.
Date Fri, 02 Aug 2013 22:19:49 GMT

    [ https://issues.apache.org/jira/browse/AMQ-4666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13728194#comment-13728194
] 

Jaewoong Choi edited comment on AMQ-4666 at 8/2/13 10:18 PM:
-------------------------------------------------------------

This simple standalone test case will demonstrate the blocking situation.  Changing prefetch
limit "prefetchLimitForAll" will just move the blocking point. Please try setting "patchApplied"
to true to see how the workaround works.
                
      was (Author: choijw1):
    This simple standalone test case will demonstrate the blocking situation.  Changing prefetch
limit "prefetchLimitForAll" will just move the blocking point. Please toggling "patchApplied"
to see how the workaround works.
                  
> Topic persistent message publishing is blocked by hitting 100% of per-destination memory
limit if there's any durable subscriber connected but not consuming.
> -------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-4666
>                 URL: https://issues.apache.org/jira/browse/AMQ-4666
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.7.0
>            Reporter: Jaewoong Choi
>         Attachments: MemoryLimitTest.java
>
>
> Failing scenario:
> 1. Embedded broker starts with the following configurations:
>    - persistent = true,
>    - systemUsage.memoryUsage.limit = 10*1024*1024 // 10mb broker main memory limit
>    - destinationPolicy.policyEntry.memoryLimit = 1*1024*1024 // 1mb per-destination memory
limit
> 2. Create a topic durable subscription with prefetchLimit=0.
> 3. Create a topic publisher and publish persistent 400kb messages.
> 4. (Problem) After publishing 3 messages successfully, PFC kicks in and the above topic
publisher gets blocked its publishing.
> At step #4, the expectation is not seeing any publisher blocking for the persistent message
publishing until the store limit is reached.  How come the persistent message publishing is
limited by 100% memory full?
> Per the code inspection, this is because the store cursor of the topic durable subscriber
(i.e. TopicStorePrefetch) is working with the main broker's memory limit, not with the per-destination
memory limit.  Hence, it keeps increasing broker main memory usage over the per-destination
memory limit and after it reached 100% of per-destination limit, PFC kicked in.
> I verified that the above scenario went through well if I fix the store cursor to use/refer-to
the per-destination memory usage along with its pending list (cache) management.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message