You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cm...@apache.org on 2009/12/03 23:39:30 UTC

svn commit: r886965 - /activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java

Author: cmacnaug
Date: Thu Dec  3 22:39:25 2009
New Revision: 886965

URL: http://svn.apache.org/viewvc?rev=886965&view=rev
Log:
Fixing a memory leak with transient PriorityDispatchContexts.

Modified:
    activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java

Modified: activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java?rev=886965&r1=886964&r2=886965&view=diff
==============================================================================
--- activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java (original)
+++ activemq/sandbox/activemq-apollo-actor/activemq-dispatcher/src/main/java/org/apache/activemq/dispatch/internal/advanced/PriorityDispatcher.java Thu Dec  3 22:39:25 2009
@@ -349,13 +349,12 @@
     }
 
     //Special dispatch method that allow high priority dispatch:
-    private final void dispatchInternal(Dispatchable dispatchable, int priority)
-    {
+    private final void dispatchInternal(Dispatchable dispatchable, int priority) {
         PriorityDispatchContext context = new PriorityDispatchContext(dispatchable, false, name);
         context.priority = priority;
         context.requestDispatch();
     }
-    
+
     /*
      * (non-Javadoc)
      * 
@@ -463,7 +462,9 @@
             updateEvent = createUpdateEvent();
             updateEvent[0] = new UpdateEvent(this);
             updateEvent[1] = new UpdateEvent(this);
-            currentOwner.takeOwnership(this);
+            if (persistent) {
+                currentOwner.takeOwnership(this);
+            }
         }
 
         private final PriorityDispatcher.UpdateEvent[] createUpdateEvent() {
@@ -543,9 +544,9 @@
             if (closed) {
                 return;
             }
-            
+
             priority = Math.min(priority, MAX_USER_PRIORITY);
-            
+
             if (this.priority == priority) {
                 return;
             }
@@ -617,10 +618,8 @@
         /**
          * May be overriden by subclass to additional work on dispatcher switch
          * 
-         * @param oldDispatcher
-         *            The old dispatcher
-         * @param newDispatcher
-         *            The new Dispatcher
+         * @param oldDispatcher The old dispatcher
+         * @param newDispatcher The new Dispatcher
          */
         protected void switchedDispatcher(PriorityDispatcher oldDispatcher, PriorityDispatcher newDispatcher) {
 
@@ -680,7 +679,7 @@
 
     }
 
-	public String getName() {
-		return name;
-	}
+    public String getName() {
+        return name;
+    }
 }