[ovs-dev] [PATCH] ovn-ctl: Fix the wrong pidfile argument passed to ovsdb-servers

nusiddiq at redhat.com nusiddiq at redhat.com
Tue Oct 9 07:17:11 UTC 2018


From: Numan Siddique <nusiddiq at redhat.com>

When OVN db servers are started usinb ovn-ctl, if the pid files
(/var/run/openvswitch/ovnnb_db.pid for example) are already
present, then ovn-ctl passes "--pidfile=123" if the pid file has
'123' stored in it. Later on when OVN pacemaker RA script calls
status_ovnnb/status_ovnsb() functions, these returns "not running".

The shell function 'pidfile_is_running()' stores the contents of
the pid file as  "pid=`cat "$pidfile"`". If the caller also
uses the same variable "pid" to store the file name, it gets
overriden.

This patch fixes this issue by renaming the local variable "pid"
in the "start_ovsdb__()" shell function to "db_file_name".

Signed-off-by: Numan Siddique <nusiddiq at redhat.com>
---
 ovn/utilities/ovn-ctl | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl
index 3ff0df68e..950467c4e 100755
--- a/ovn/utilities/ovn-ctl
+++ b/ovn/utilities/ovn-ctl
@@ -95,7 +95,7 @@ promote_ovnsb() {
 
 start_ovsdb__() {
     local DB=$1 db=$2 schema_name=$3 table_name=$4
-    local pid
+    local db_pid_file
     local cluster_local_addr
     local cluster_local_port
     local cluster_local_proto
@@ -116,7 +116,7 @@ start_ovsdb__() {
     local addr
     local active_conf_file
     local use_remote_in_db
-    eval pid=\$DB_${DB}_PID
+    eval db_pid_file=\$DB_${DB}_PID
     eval cluster_local_addr=\$DB_${DB}_CLUSTER_LOCAL_ADDR
     eval cluster_local_port=\$DB_${DB}_CLUSTER_LOCAL_PORT
     eval cluster_local_proto=\$DB_${DB}_CLUSTER_LOCAL_PROTO
@@ -139,7 +139,7 @@ start_ovsdb__() {
     eval use_remote_in_db=\$DB_${DB}_USE_REMOTE_IN_DB
 
     # Check and eventually start ovsdb-server for DB
-    if pidfile_is_running $pid; then
+    if pidfile_is_running $db_pid_file; then
         return
     fi
 
@@ -169,7 +169,7 @@ $cluster_remote_port
 
     set ovsdb-server
     set "$@" $log --log-file=$logfile
-    set "$@" --remote=punix:$sock --pidfile=$pid
+    set "$@" --remote=punix:$sock --pidfile=$db_pid_file
     set "$@" --unixctl=ovn${db}_db.ctl
 
     [ "$OVS_USER" != "" ] && set "$@" --user "$OVS_USER"
-- 
2.17.1



More information about the dev mailing list