From: Numan Siddique <[email protected]> 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 <[email protected]> Signed-off-by: Numan Siddique <[email protected]> --- ovn/utilities/ovndb-servers.ocf | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ovn/utilities/ovndb-servers.ocf b/ovn/utilities/ovndb-servers.ocf index 908cb3c..ad03cc3 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 -- 2.9.3 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
