diff options
| author | Alan Conway <aconway@apache.org> | 2013-01-23 21:23:21 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-01-23 21:23:21 +0000 |
| commit | 5705c6575e717d74e6bd2a942b7ee085eb62cffb (patch) | |
| tree | f42539002368bc3776de0331e209b2443bd1d17f /qpid/cpp/src | |
| parent | 58e5ec4839a77ed0a859e85f94386fbb9d57a451 (diff) | |
| download | qpid-python-5705c6575e717d74e6bd2a942b7ee085eb62cffb.tar.gz | |
NO-JIRA: HA refactor, centralize critical error shutdown logic.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1437742 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/ha/BrokerReplicator.cpp | 14 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/HaBroker.cpp | 12 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/HaBroker.h | 4 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/QueueReplicator.cpp | 4 |
4 files changed, 17 insertions, 17 deletions
diff --git a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp index fc13314d8f..f51a69e461 100644 --- a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp +++ b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp @@ -439,9 +439,10 @@ void BrokerReplicator::route(Deliverable& msg) { } } } catch (const std::exception& e) { - QPID_LOG(critical, logPrefix << "Configuration replication failed: " << e.what() - << ": while handling: " << list); - haBroker.shutdown(); +; + haBroker.shutdown( + QPID_MSG(logPrefix << "Configuration replication failed: " + << e.what() << ": while handling: " << list)); throw; } } @@ -725,9 +726,10 @@ void BrokerReplicator::doResponseHaBroker(Variant::Map& values) { << ") does not match primary (" << primary << ")")); haBroker.setMembership(values[MEMBERS].asList()); } catch (const std::exception& e) { - QPID_LOG(critical, logPrefix << "Invalid HA Broker response: " << e.what() - << ": " << values); - haBroker.shutdown(); + haBroker.shutdown( + QPID_MSG(logPrefix << "Invalid HA Broker response: " << e.what() + << ": " << values)); + throw; } } diff --git a/qpid/cpp/src/qpid/ha/HaBroker.cpp b/qpid/cpp/src/qpid/ha/HaBroker.cpp index e15fb0c096..0fd8c9e518 100644 --- a/qpid/cpp/src/qpid/ha/HaBroker.cpp +++ b/qpid/cpp/src/qpid/ha/HaBroker.cpp @@ -256,9 +256,10 @@ std::vector<Url> HaBroker::getKnownBrokers() const { return knownBrokers; } -void HaBroker::shutdown() { - QPID_LOG(critical, logPrefix << "Critical error, shutting down."); +void HaBroker::shutdown(const std::string& message) { + QPID_LOG(critical, message); broker.shutdown(); + throw Exception(message); } BrokerStatus HaBroker::getStatus() const { @@ -294,12 +295,11 @@ void HaBroker::setStatus(BrokerStatus newStatus, Mutex::ScopedLock& l) { QPID_LOG(info, logPrefix << "Status change: " << printable(status) << " -> " << printable(newStatus)); bool legal = checkTransition(status, newStatus); + assert(legal); if (!legal) { - QPID_LOG(critical, logPrefix << "Illegal state transition: " - << printable(status) << " -> " << printable(newStatus)); - shutdown(); + shutdown(QPID_MSG(logPrefix << "Illegal state transition: " + << printable(status) << " -> " << printable(newStatus))); } - assert(legal); // FIXME aconway 2012-12-07: fail status = newStatus; statusChanged(l); } diff --git a/qpid/cpp/src/qpid/ha/HaBroker.h b/qpid/cpp/src/qpid/ha/HaBroker.h index f2a837ddea..71e856fbeb 100644 --- a/qpid/cpp/src/qpid/ha/HaBroker.h +++ b/qpid/cpp/src/qpid/ha/HaBroker.h @@ -78,8 +78,8 @@ class HaBroker : public management::Manageable broker::Broker& getBroker() { return broker; } const Settings& getSettings() const { return settings; } - /** Shut down the broker. Caller should log a critical error message. */ - void shutdown(); + /** Shut down the broker because of a critical error. */ + void shutdown(const std::string& message); BrokerStatus getStatus() const; void setStatus(BrokerStatus); diff --git a/qpid/cpp/src/qpid/ha/QueueReplicator.cpp b/qpid/cpp/src/qpid/ha/QueueReplicator.cpp index 6b270b41d3..6fe49bc1af 100644 --- a/qpid/cpp/src/qpid/ha/QueueReplicator.cpp +++ b/qpid/cpp/src/qpid/ha/QueueReplicator.cpp @@ -260,9 +260,7 @@ void QueueReplicator::route(Deliverable& msg) // Ignore unknown event keys, may be introduced in later versions. } catch (const std::exception& e) { - QPID_LOG(critical, logPrefix << "Replication failed: " << e.what()); - haBroker.shutdown(); - throw; + haBroker.shutdown(QPID_MSG(logPrefix << "Replication failed: " << e.what())); } } |
