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