You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2010/02/16 14:06:40 UTC

[jira] Created: (AMQ-2610) expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in

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

                 Key: AMQ-2610
                 URL: https://issues.apache.org/activemq/browse/AMQ-2610
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.3.0
         Environment: all
            Reporter: Gary Tully
            Assignee: Gary Tully
             Fix For: 5.4.0


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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Work started: (AMQ-2610) expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in

Posted by "Gary Tully (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-2610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on AMQ-2610 started by Gary Tully.

> expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2610
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2610
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.0
>         Environment: all
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.4.0
>
>         Attachments: UnlimitedEnqueueTest.java
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (AMQ-2610) expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in

Posted by "Gary Tully (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-2610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully updated AMQ-2610:
----------------------------

    Attachment: UnlimitedEnqueueTest.java

Test case that shows spooling and block issue when workaround of using  {code}policy.setExpireMessagesPeriod(0);{code} is omitted.

> expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2610
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2610
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.0
>         Environment: all
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.4.0
>
>         Attachments: UnlimitedEnqueueTest.java
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (AMQ-2610) expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in

Posted by "Gary Tully (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQ-2610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully resolved AMQ-2610.
-----------------------------

       Resolution: Fixed
    Fix Version/s: 5.3.1

resolved in r911650 and 5.3 branch r911759

solution is to have pendingmessagecursor next  do an auto increment on what it returns to make the caller responsible for decrementing or holding on to the references. This allows a browser to peek at a reference and release it at will.

> expiry processing with file pending cursor and no consumers fills memory - causing producerFlowControll to kick in
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2610
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2610
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.0
>         Environment: all
>            Reporter: Gary Tully
>            Assignee: Gary Tully
>             Fix For: 5.3.1, 5.4.0
>
>         Attachments: UnlimitedEnqueueTest.java
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.