diff options
author | Numan Siddique <nusiddiq@redhat.com> | 2017-05-22 07:05:12 +0530 |
---|---|---|
committer | Andy Zhou <azhou@ovn.org> | 2017-05-22 16:48:45 -0700 |
commit | 52727f4858d76a0c1668a8b0d4e42c16ddfe263c (patch) | |
tree | 146b0b78de0834eaacf98d1a252c173ebeb679f8 /ovn | |
parent | 0b4f83e2dce44625daa56983c34ccd14a32bf762 (diff) | |
download | openvswitch-52727f4858d76a0c1668a8b0d4e42c16ddfe263c.tar.gz |
ovn pacemaker: Fix return code errors in start/stop action
start action returns OCF_RUNNING_MASTER in certain scenarios.
But as per the OCF guidelines, status code OCF_RUNNING_MASTER shoud
be returned only in monitor action [1].
Whenever the start action returns OCF_RUNNING_MASTER, it is observed
in the testing that, pacemaker stops the ovsdb-server ocf resource
in that node. This patch fixes this issue by returning OCF_SUCESS in
such cases.
stop action returns OCF_RUNNING_MASTER if the ovsdb-servers are
running as master. But as per the OCF guidelines [2], stop action
should only return OCF_SUCCESS. If any other code is returned,
pacemaker cluster would block that resource in that node.
This patch fixes this issue by stopping the ovsdb-servers when they
are running as masters (which is the expected case) and returns
OCF_SUCCESS.
[1] - http://www.linux-ha.org/doc/dev-guides/_literal_ocf_running_master_literal_8.html
[2] - http://www.linux-ha.org/doc/dev-guides/_literal_stop_literal_action.html
CC: Andy Zhou <azhou@ovn.org>
Signed-off-by: Numan Siddique <nusiddiq@redhat.com>
Signed-off-by: Andy Zhou <azhou@ovn.org>
Diffstat (limited to 'ovn')
-rwxr-xr-x | ovn/utilities/ovndb-servers.ocf | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ovn/utilities/ovndb-servers.ocf b/ovn/utilities/ovndb-servers.ocf index 908cb3c17..ad03cc3a3 100755 --- a/ovn/utilities/ovndb-servers.ocf +++ b/ovn/utilities/ovndb-servers.ocf @@ -275,7 +275,18 @@ ovsdb_server_start() { rc=$? case $rc in $OCF_SUCCESS) return $rc;; - $OCF_RUNNING_MASTER) return $rc;; + $OCF_RUNNING_MASTER) + # When a slave node is promoted as master, the action would be + # STOP -> START -> PROMOTE. + # When the start action is called, it is possible for the + # ovsdb-server's to be started as active. This could happen + # if the node owns the $MASTER_IP. At this point, pacemaker + # has not promoted this node yet. So return OCF_SUCCESS. + # Let pacemaker promote it in subsequent actions. + # As per the OCF guidelines, only monitor action should return + # OCF_RUNNING_MASTER. + # http://www.linux-ha.org/doc/dev-guides/_literal_ocf_running_master_literal_8.html + return $OCF_SUCCESS;; $OCF_ERR_GENERIC) return $rc;; # Otherwise loop, waiting for the service to start, until # the cluster times the operation out @@ -288,7 +299,6 @@ ovsdb_server_stop() { ovsdb_server_check_status case $? in $OCF_NOT_RUNNING) return ${OCF_SUCCESS};; - $OCF_RUNNING_MASTER) return ${OCF_RUNNING_MASTER};; esac ${OVN_CTL} stop_ovsdb |