summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2013-02-25 19:43:29 +0000
committerAlan Conway <aconway@apache.org>2013-02-25 19:43:29 +0000
commit7777cf9b68d74dd3d90a9646e5afcfcb1a69dfe1 (patch)
tree6864b75256d43be86f526bff2b1e820881a8d3cf
parente0045c53af7d5178a46460fd69f5fbe3531565e3 (diff)
downloadqpid-python-7777cf9b68d74dd3d90a9646e5afcfcb1a69dfe1.tar.gz
Bug 891689 - New HA regularly shutting down active node
qpid-primary script was incorrect and failing on status calls, causing the broker to be restarted by rgmanager. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1449832 13f79535-47bb-0310-9956-ffa450edef68
-rwxr-xr-xcpp/etc/qpidd-primary.in2
-rw-r--r--cpp/src/qpid/ha/types.cpp5
-rwxr-xr-xtools/src/py/qpid-ha7
3 files changed, 12 insertions, 2 deletions
diff --git a/cpp/etc/qpidd-primary.in b/cpp/etc/qpidd-primary.in
index 39700bead3..da0c0c2771 100755
--- a/cpp/etc/qpidd-primary.in
+++ b/cpp/etc/qpidd-primary.in
@@ -57,7 +57,7 @@ if [[ !(-x $QPID_HA) ]]; then
fi
status() {
- if $QPID_HA -b localhost:$QPID_PORT status --expect=primary ; then
+ if $QPID_HA -b localhost:$QPID_PORT status --is-primary ; then
echo "qpidd is primary"
else
echo "qpidd is not primary"
diff --git a/cpp/src/qpid/ha/types.cpp b/cpp/src/qpid/ha/types.cpp
index 4010ec03a8..bb4bf83574 100644
--- a/cpp/src/qpid/ha/types.cpp
+++ b/cpp/src/qpid/ha/types.cpp
@@ -56,6 +56,11 @@ template <> const char* Enum<ReplicateLevel>::NAMES[] = { "none", "configuration
template <> const size_t Enum<ReplicateLevel>::N = 3;
template <> const char* Enum<BrokerStatus>::NAME = "HA broker status";
+
+// NOTE: Changing status names will have an impact on qpid-ha and
+// the qpidd-primary init script.
+// Don't change them unless you are going to update all dependent code.
+//
template <> const char* Enum<BrokerStatus>::NAMES[] = {
"joining", "catchup", "ready", "recovering", "active", "standalone"
};
diff --git a/tools/src/py/qpid-ha b/tools/src/py/qpid-ha
index 4414623855..3d56f24fb8 100755
--- a/tools/src/py/qpid-ha
+++ b/tools/src/py/qpid-ha
@@ -88,8 +88,13 @@ class StatusCmd(Command):
Command.__init__(self, "status", "Print HA status")
self.op.add_option(
"--expect", type="string", metavar="<status>",
- help="Don't print status but return 0 if it matches <status>, 1 otherwise")
+ help="Don't print status. Return 0 if it matches <status>, 1 otherwise")
+ self.op.add_option(
+ "--is-primary", action="store_true", default=False,
+ help="Don't print status. Return 0 if the broker is primary, 1 otherwise")
def do_execute(self, qmf_broker, ha_broker, opts, args):
+ if opts.is_primary:
+ if not ha_broker.status in ["active", "recovering"]: raise ExitStatus(1)
if opts.expect:
if opts.expect != ha_broker.status: raise ExitStatus(1)
else: