You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/10/17 18:34:59 UTC

svn commit: r1765350 - in /qpid/java/trunk: broker-core/src/main/java/org/apache/qpid/server/flow/ broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/ser...

Author: rgodfrey
Date: Mon Oct 17 18:34:59 2016
New Revision: 1765350

URL: http://svn.apache.org/viewvc?rev=1765350&view=rev
Log:
QPID-7477 : a single update to credit should only result in one call to setSuspended

Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java
    qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/Pre0_10CreditManager.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java?rev=1765350&r1=1765349&r2=1765350&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/flow/AbstractFlowCreditManager.java Mon Oct 17 18:34:59 2016
@@ -59,12 +59,14 @@ public abstract class AbstractFlowCredit
         }
     }
 
-    protected final void setSuspended(final boolean suspended)
+    protected final boolean setSuspended(final boolean suspended)
     {
         if(_suspended.compareAndSet(!suspended, suspended))
         {
             notifyListeners(suspended);
+            return true;
         }
+        return false;
     }
 
     protected final void notifyIncreaseBytesCredit()

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java?rev=1765350&r1=1765349&r2=1765350&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/CreditCreditManager.java Mon Oct 17 18:34:59 2016
@@ -61,17 +61,17 @@ public class CreditCreditManager extends
             notifyIncrease = notifyIncrease && bytesCredit>0;
             _bytesCredit += bytesCredit;
 
-
-
-            if(notifyIncrease)
-            {
-                notifyIncreaseBytesCredit();
-            }
+        }
+        else
+        {
+            notifyIncrease = false;
         }
 
+        if(!setSuspended(!hasCredit()) && notifyIncrease)
+        {
+            notifyIncreaseBytesCredit();
 
-
-        setSuspended(!hasCredit());
+        }
 
     }
 

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java?rev=1765350&r1=1765349&r2=1765350&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/WindowCreditManager.java Mon Oct 17 18:34:59 2016
@@ -71,37 +71,32 @@ public class WindowCreditManager extends
     public synchronized void restoreCredit(final long messageCredit, final long bytesCredit)
     {
         _messageUsed -= messageCredit;
-        if(_messageUsed < 0L)
+        if (_messageUsed < 0L)
         {
-            LOGGER.error("Message credit used value was negative: "+ _messageUsed);
+            LOGGER.error("Message credit used value was negative: " + _messageUsed);
             _messageUsed = 0;
         }
 
         boolean notifyIncrease = true;
 
-        if(_messageCreditLimit > 0L)
+        if (_messageCreditLimit > 0L)
         {
             notifyIncrease = (_messageUsed != _messageCreditLimit);
         }
 
         _bytesUsed -= bytesCredit;
-        if(_bytesUsed < 0L)
+        if (_bytesUsed < 0L)
         {
-            LOGGER.error("Bytes credit used value was negative: "+ _bytesUsed);
+            LOGGER.error("Bytes credit used value was negative: " + _bytesUsed);
             _bytesUsed = 0;
         }
 
-        if(_bytesCreditLimit > 0L)
-        {
-            notifyIncrease = notifyIncrease && bytesCredit>0;
+        notifyIncrease = notifyIncrease && bytesCredit > 0 && _bytesCreditLimit > 0L ;
 
-            if(notifyIncrease)
-            {
-                notifyIncreaseBytesCredit();
-            }
+        if (!setSuspended(!hasCredit()) && notifyIncrease)
+        {
+            notifyIncreaseBytesCredit();
         }
-
-        setSuspended(!hasCredit());
     }
 
 

Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/Pre0_10CreditManager.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/Pre0_10CreditManager.java?rev=1765350&r1=1765349&r2=1765350&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/Pre0_10CreditManager.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/Pre0_10CreditManager.java Mon Oct 17 18:34:59 2016
@@ -90,12 +90,14 @@ public class Pre0_10CreditManager extend
                     _bytesCreditLimit));
         }
 
-        if (_bytesCreditLimit != 0 && _bytesCredit > 0 && bytesCredit > 0 && hadCredit)
+        boolean suspended = !hasCredit();
+        if(!setSuspended(suspended))
         {
-            notifyIncreaseBytesCredit();
+            if (!suspended && _bytesCreditLimit != 0 && _bytesCredit > 0 && bytesCredit > 0 && hadCredit)
+            {
+                notifyIncreaseBytesCredit();
+            }
         }
-
-        setSuspended(!hasCredit());
     }
 
     public synchronized boolean hasCredit()



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org