diff options
| author | Keith Wall <kwall@apache.org> | 2015-04-05 18:45:50 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2015-04-05 18:45:50 +0000 |
| commit | 4e512670d16c352c9ff403b8525fae51a2183243 (patch) | |
| tree | c018f639d62264d035a656486e870c851a50776f /qpid/java | |
| parent | 822748c9a4a12345772beabe1bc15179288cef51 (diff) | |
| download | qpid-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')
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() |
