From 841d89675133443c4058bd147575fa959433fe99 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Tue, 10 Jun 2008 09:59:17 +0000 Subject: Improved exception handling for commit. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@666051 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/TxBuffer.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/qpid/broker/TxBuffer.cpp b/cpp/src/qpid/broker/TxBuffer.cpp index 5b5b00e929..cdc5b37dfd 100644 --- a/cpp/src/qpid/broker/TxBuffer.cpp +++ b/cpp/src/qpid/broker/TxBuffer.cpp @@ -19,6 +19,7 @@ * */ #include "TxBuffer.h" +#include "qpid/log/Statement.h" #include using boost::mem_fn; @@ -53,15 +54,22 @@ void TxBuffer::enlist(TxOp::shared_ptr op) bool TxBuffer::commitLocal(TransactionalStore* const store) { - std::auto_ptr ctxt; - if(store) ctxt = store->begin(); - if (prepare(ctxt.get())) { - if(store) store->commit(*ctxt); - commit(); - return true; - } else { - if(store) store->abort(*ctxt); - rollback(); - return false; + if (!store) return false; + try { + std::auto_ptr ctxt = store->begin(); + if (prepare(ctxt.get())) { + store->commit(*ctxt); + commit(); + return true; + } else { + store->abort(*ctxt); + rollback(); + return false; + } + } catch (std::exception& e) { + QPID_LOG(error, "Commit failed with exception: " << e.what()); + } catch (...) { + QPID_LOG(error, "Commit failed with unknown exception"); } + return false; } -- cgit v1.2.1