diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2015-03-17 16:11:18 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2015-03-17 16:11:18 +0000 |
| commit | 54f8c414e2b6aa15039071f5cab23dcdc5822f41 (patch) | |
| tree | 7e0f6b6d14bddbaf90e6233a82003fab5b816dcb /qpid/java/broker-plugins | |
| parent | 5d64ed503b8868a2930f01b8233926c689aed200 (diff) | |
| download | qpid-python-54f8c414e2b6aa15039071f5cab23dcdc5822f41.tar.gz | |
QPID-6429 : Fix issue when async close is called twice on a session, tidy up debug and logging
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1667346 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
| -rw-r--r-- | qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java | 56 |
1 files changed, 31 insertions, 25 deletions
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 855272fbef..4956faa199 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 @@ -260,21 +260,24 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S @Override public void performAction(final ServerConnection conn) { - ExecutionException ex = new ExecutionException(); - ExecutionErrorCode code = ExecutionErrorCode.INTERNAL_ERROR; - try + if(!session.isClosing()) { - code = ExecutionErrorCode.get(cause.getCode()); + ExecutionException ex = new ExecutionException(); + ExecutionErrorCode code = ExecutionErrorCode.INTERNAL_ERROR; + try + { + code = ExecutionErrorCode.get(cause.getCode()); + } + catch (IllegalArgumentException iae) + { + // Ignore, already set to INTERNAL_ERROR + } + ex.setErrorCode(code); + ex.setDescription(message); + session.invoke(ex); + + session.close(cause, message); } - catch (IllegalArgumentException iae) - { - // Ignore, already set to INTERNAL_ERROR - } - ex.setErrorCode(code); - ex.setDescription(message); - session.invoke(ex); - - session.close(cause, message); } }); @@ -382,20 +385,23 @@ public class ServerConnection extends Connection implements AMQConnectionModel<S @Override public void performAction(final ServerConnection object) { - closeSubscriptions(); - performDeleteTasks(); - - setState(CLOSING); - ConnectionCloseCode replyCode = ConnectionCloseCode.NORMAL; - try - { - replyCode = ConnectionCloseCode.get(cause.getCode()); - } - catch (IllegalArgumentException iae) + if(!isClosing()) { - // Ignore + closeSubscriptions(); + performDeleteTasks(); + + setState(CLOSING); + ConnectionCloseCode replyCode = ConnectionCloseCode.NORMAL; + try + { + replyCode = ConnectionCloseCode.get(cause.getCode()); + } + catch (IllegalArgumentException iae) + { + // Ignore + } + sendConnectionClose(replyCode, message); } - sendConnectionClose(replyCode, message); } }); } |
