diff options
| author | Alan Conway <aconway@apache.org> | 2013-02-25 19:43:29 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-02-25 19:43:29 +0000 |
| commit | 7777cf9b68d74dd3d90a9646e5afcfcb1a69dfe1 (patch) | |
| tree | 6864b75256d43be86f526bff2b1e820881a8d3cf | |
| parent | e0045c53af7d5178a46460fd69f5fbe3531565e3 (diff) | |
| download | qpid-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-x | cpp/etc/qpidd-primary.in | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/ha/types.cpp | 5 | ||||
| -rwxr-xr-x | tools/src/py/qpid-ha | 7 |
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: |
