summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2015-04-05 18:45:50 +0000
committerKeith Wall <kwall@apache.org>2015-04-05 18:45:50 +0000
commit4e512670d16c352c9ff403b8525fae51a2183243 (patch)
treec018f639d62264d035a656486e870c851a50776f /qpid/java
parent822748c9a4a12345772beabe1bc15179288cef51 (diff)
downloadqpid-python-4e512670d16c352c9ff403b8525fae51a2183243.tar.gz
QPID-6477: [Java Broker] Make 0-10 implementation ignore all received frames except ConnectionCloseOk once ConnectionClose is sent
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1671415 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java10
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java25
2 files changed, 17 insertions, 18 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
index bbe22e804e..abedc46910 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
@@ -264,16 +264,10 @@ public class AmqpPortImpl extends AbstractClientAuthCapablePortWithAuthProvider<
@Override
protected ListenableFuture<Void> beforeClose()
{
- LOGGER.debug("beforeClose ");
-
_closing.set(true);
- //
-
if (_connectionCount.get() == 0)
{
- LOGGER.debug("beforeClose - no connections remain");
-
_noConnectionsRemain.set(null);
}
@@ -520,8 +514,6 @@ public class AmqpPortImpl extends AbstractClientAuthCapablePortWithAuthProvider<
public int decrementConnectionCount()
{
int openConnections = _connectionCount.decrementAndGet();
- LOGGER.debug("decrementConnectionCount {}", openConnections);
-
int maxOpenConnections = getMaxOpenConnections();
if(maxOpenConnections > 0
@@ -532,8 +524,6 @@ public class AmqpPortImpl extends AbstractClientAuthCapablePortWithAuthProvider<
if (_closing.get() && _connectionCount.get() == 0)
{
- LOGGER.debug("decrementConnectionCount - No connections remain");
-
_noConnectionsRemain.set(null);
}
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
index 4956faa199..227281bbaf 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
@@ -58,7 +58,9 @@ import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
import org.apache.qpid.transport.Connection;
+import org.apache.qpid.transport.ConnectionClose;
import org.apache.qpid.transport.ConnectionCloseCode;
+import org.apache.qpid.transport.ConnectionCloseOk;
import org.apache.qpid.transport.ExecutionErrorCode;
import org.apache.qpid.transport.ExecutionException;
import org.apache.qpid.transport.Method;
@@ -98,6 +100,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S
private ServerProtocolEngine _serverProtocolEngine;
private boolean _ignoreFutureInput;
+ private boolean _ignoreAllButConnectionCloseOk;
public ServerConnection(final long connectionId,
Broker<?> broker,
@@ -135,6 +138,10 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S
protected void invoke(Method method)
{
super.invoke(method);
+ if (method instanceof ConnectionClose)
+ {
+ _ignoreAllButConnectionCloseOk = true;
+ }
}
EventLogger getEventLogger()
@@ -330,16 +337,18 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S
}
}
- Subject.doAs(subject, new PrivilegedAction<Void>()
+ if(!_ignoreAllButConnectionCloseOk || (event instanceof ConnectionCloseOk))
{
- @Override
- public Void run()
+ Subject.doAs(subject, new PrivilegedAction<Void>()
{
- ServerConnection.super.received(event);
- return null;
- }
- });
-
+ @Override
+ public Void run()
+ {
+ ServerConnection.super.received(event);
+ return null;
+ }
+ });
+ }
}
public String toLogString()