summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/SessionHandler.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-11-12 16:58:52 +0000
committerAlan Conway <aconway@apache.org>2013-11-12 16:58:52 +0000
commitf87a61f06c3aa3d866cd3cc2fccf003276f6949a (patch)
treebe0c23f69d8a8de9f66b814a58121baa14ec8382 /cpp/src/qpid/broker/SessionHandler.cpp
parent8f88e1e89b43c6d86851fe2fa183ff4ea58d352b (diff)
downloadqpid-python-f87a61f06c3aa3d866cd3cc2fccf003276f6949a.tar.gz
QPID-5275: HA transactions failing in qpid-cluster-benchmark
The test was failing due to incorrect handling of the transaction lifecycle: - Failing to handle the automatic rollback of the empty TX at session close. - Deleting the tx-q before all backups were finished with it. The fixes include - Make tx-q auto-delete, deleted only when the TxReplicators cancel their subscriptions. - Use markInUse/releaseFromUse on the primary to keep the tx-q until the primary is done. - Count TxReplicators for auto-delete (unlike normal QueueReplicators) - Improved error handling and log messages - Handle *incoming* exceptions on a federation link by passing to ErrorListener - QueueReplicator catches incoming not-found and resource-deleted exceptions - close the backup bridge, handle race between subscribe and delete. - Simplify QueueSnapshots, remove need for snapshot map. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1541146 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/SessionHandler.cpp')
-rw-r--r--cpp/src/qpid/broker/SessionHandler.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/SessionHandler.cpp b/cpp/src/qpid/broker/SessionHandler.cpp
index ff7693e93a..a8f5734af7 100644
--- a/cpp/src/qpid/broker/SessionHandler.cpp
+++ b/cpp/src/qpid/broker/SessionHandler.cpp
@@ -68,6 +68,13 @@ void SessionHandler::executionException(
errorListener->executionException(code, msg);
}
+void SessionHandler::incomingExecutionException(
+ framing::execution::ErrorCode code, const std::string& msg)
+{
+ if (errorListener)
+ errorListener->incomingExecutionException(code, msg);
+}
+
amqp_0_10::Connection& SessionHandler::getConnection() { return connection; }
const amqp_0_10::Connection& SessionHandler::getConnection() const { return connection; }