diff options
Diffstat (limited to 'qpid/java/common/src')
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java index dc32569ee8..19f00378b1 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java @@ -467,11 +467,12 @@ public class Connection extends ConnectionInvoker { synchronized (lock) { + List <Binary> transactedSessions = new ArrayList(); for (Session ssn : sessions.values()) { if (ssn.isTransacted()) - { - removeSession(ssn); + { + transactedSessions.add(ssn.getName()); ssn.setState(Session.State.CLOSED); } else @@ -481,6 +482,11 @@ public class Connection extends ConnectionInvoker ssn.resume(); } } + + for (Binary ssn_name : transactedSessions) + { + sessions.remove(ssn_name); + } setState(OPEN); } } |
