diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2008-03-17 17:22:23 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2008-03-17 17:22:23 +0000 |
| commit | 9be19ae547c592691ac4f3f085d8ffcdc23c4390 (patch) | |
| tree | 8ca9dcd8d1a71a49e167fb7f5c7be7881e0f482c /java/broker/src/main | |
| parent | 384943f1766aa295a8fa05603300dc940db94200 (diff) | |
| download | qpid-python-9be19ae547c592691ac4f3f085d8ffcdc23c4390.tar.gz | |
QPID-847 : InvalidSelectorException. This was caused by the Broker now being more AMQP spec compliant than previously. Reverted the change in AMQMinaProtocolSession.java that is causing the issue but we need to correctly fix this issue in the client as the client is not AMQP spec compliant, even with the STRICT_AMQP flag. Updated SelectorTest.java with an additional test so we don't have the functionality reversion later.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@637977 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src/main')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java index 4c65a4682a..4267642b14 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java +++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java @@ -227,7 +227,7 @@ public class AMQMinaProtocolSession implements AMQProtocolSession, Managable return; } } - + try @@ -356,7 +356,7 @@ public class AMQMinaProtocolSession implements AMQProtocolSession, Managable } catch (Exception e) { - + for (AMQMethodListener listener : _frameListeners) { listener.error(e); @@ -548,7 +548,15 @@ public class AMQMinaProtocolSession implements AMQProtocolSession, Managable public void closeChannelOk(int channelId) { - removeChannel(channelId); + // todo QPID-847 - This is called from two lcoations ChannelCloseHandler and ChannelCloseOkHandler. + // When it is the CC_OK_Handler then it makes sence to remove the channel else we will leak memory. + // We do it from the Close Handler as we are sending the OK back to the client. + // While this is AMQP spec compliant. The Java client in the event of an IllegalArgumentException + // will send a close-ok.. Where we should call removeChannel. + // However, due to the poor exception handling on the client. The client-user will be notified of the + // InvalidArgument and if they then decide to close the session/connection then the there will be time + // for that to occur i.e. a new close method be sent before the exeption handling can mark the session closed. + //removeChannel(channelId); _closingChannelsList.remove(new Integer(channelId)); } |
