You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2008/12/26 15:31:09 UTC

svn commit: r729498 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java

Author: dejanb
Date: Fri Dec 26 06:31:09 2008
New Revision: 729498

URL: http://svn.apache.org/viewvc?rev=729498&view=rev
Log:
fix for https://issues.apache.org/activemq/browse/AMQ-2044

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java?rev=729498&r1=729497&r2=729498&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java Fri Dec 26 06:31:09 2008
@@ -104,7 +104,7 @@
             synchronized(this) {
 	            // If there was nothing dispatched.. we may need to setup a timeout.
 	            if (dispatchCounterBeforePull == dispatchCounter) {
-	                // imediate timeout used by receiveNoWait()
+	                // immediate timeout used by receiveNoWait()
 	                if (pull.getTimeout() == -1) {
 	                    // Send a NULL message.
 	                    add(QueueMessageReference.NULL_MESSAGE);
@@ -128,13 +128,15 @@
      * Occurs when a pull times out. If nothing has been dispatched since the
      * timeout was setup, then send the NULL message.
      */
-    final synchronized void pullTimeout(long dispatchCounterBeforePull) {
+    final void pullTimeout(long dispatchCounterBeforePull) {
         if (dispatchCounterBeforePull == dispatchCounter) {
-            try {
-                add(QueueMessageReference.NULL_MESSAGE);
-                dispatchPending();
-            } catch (Exception e) {
-                context.getConnection().serviceException(e);
+            synchronized (pendingLock) {
+                try {
+                    add(QueueMessageReference.NULL_MESSAGE);
+                    dispatchPending();
+                } catch (Exception e) {
+                    context.getConnection().serviceException(e);
+                }
             }
         }
     }