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 2009/09/07 18:10:12 UTC

[jira] Updated: (AMQ-1112) remove expired messages from Store and update Message cursors

     [ https://issues.apache.org/activemq/browse/AMQ-1112?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gary Tully updated AMQ-1112:
----------------------------

    Comment: was deleted

(was: The following diff resolved the hang: need to do some move validation on it though as holding the dispatchMutex for the duration of iterate may be a little heavy handed :
{code}Index: src/main/java/org/apache/activemq/broker/region/Queue.java
===================================================================
--- src/main/java/org/apache/activemq/broker/region/Queue.java	(revision 812045)
+++ src/main/java/org/apache/activemq/broker/region/Queue.java	(working copy)
@@ -1081,7 +1081,7 @@
     public boolean iterate() {
         boolean pageInMoreMessages = false;   
         synchronized(iteratingMutex) {
-            
+            synchronized(dispatchMutex) {
             // do early to allow dispatch of these waiting messages
             synchronized(messagesWaitingForSpace) {
                 while (!messagesWaitingForSpace.isEmpty() && !memoryUsage.isFull()) {
@@ -1167,6 +1167,7 @@
 	        }
 	        return !messagesWaitingForSpace.isEmpty();
         }
+        }
     }
 
     protected MessageReferenceFilter createMessageIdFilter(final String messageId) {
@@ -1371,6 +1372,7 @@
     }
 
     private void doDispatch(List<QueueMessageReference> list) throws Exception {
+        boolean doWakeUp = false;
         synchronized(dispatchMutex) {
        
             synchronized (pagedInPendingDispatch) {
@@ -1391,11 +1393,14 @@
                                 pagedInPendingDispatch.add(qmr);
                             }
                         }
-                        wakeup();
+                        doWakeUp  = true;
                     }
                 }
             }
         } 
+        if (doWakeUp) {
+            wakeup();
+        }
     }
     
     /**
{code})

> remove expired messages from Store and update Message cursors
> -------------------------------------------------------------
>
>                 Key: AMQ-1112
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1112
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.0.0
>            Reporter: Rob Davies
>            Assignee: Gary Tully
>             Fix For: 5.3.0
>
>
> Ensure messages that are expired are removed from message store and message cursrors are also updated consistently

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