[ovs-dev] [PATCH ovn] ovn-ctl: Handle cluster db upgrades for run_(nb/sb)_ovsdb

Mark Michelson mmichels at redhat.com
Tue Sep 8 21:01:14 UTC 2020


This needs a rebase because commit
413cf9864024c4ef253ea177435161af198d5784 changed the way that the ovsdb 
server is started.


On 9/3/20 9:04 AM, numans at ovn.org wrote:
> From: Numan Siddique <numans at ovn.org>
> 
> when ovn-ctl run_(nb_sb)_ovsdb is called, the ovsdb-server is started without
> passing --detach and --monoitor and the process is exec'd.
> 
> For cluster mode, upgrade_cluster is never called and hence the dbs are not upraded
> to new schema. CMS has to handle the db upgrade separately.
> 
> This patch handles the db upgrade by starting ovsdb-server in background and then
> waits on ovsdb-server to complete.
> 
> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1868392
> Signed-off-by: Numan Siddique <numans at ovn.org>
> ---
>   utilities/ovn-ctl | 18 +++++++++++++++++-
>   1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/utilities/ovn-ctl b/utilities/ovn-ctl
> index 8afe68a0ad..dee58d9a36 100755
> --- a/utilities/ovn-ctl
> +++ b/utilities/ovn-ctl
> @@ -288,7 +288,19 @@ $cluster_remote_port
>           set "$@" --sync-from=`cat $active_conf_file`
>       fi
>   
> -    "$@" "$file"
> +    local run_ovsdb_in_bg="no"
> +    local process_id=
> +    if test X$detach = Xno && test $mode = cluster && test -z "$cluster_remote_addr" ; then
> +        # When detach is no (for run_nb_ovsdb/run_sb_ovsdb commands)
> +        # we want to run ovsdb-server in background rather than running it in foreground
> +        # so that the OVN dbs are upgraded for the cluster mode.
> +        # Otherwise, CMS has to take the responsibility of upgrading the dbs.
> +        run_ovsdb_in_bg="yes"
> +        "$@" $file &
> +        process_id=$!
> +    else
> +        "$@" $file
> +    fi
>   
>       # Initialize the database if it's NOT joining a cluster.
>       if test -z "$cluster_remote_addr"; then
> @@ -298,6 +310,10 @@ $cluster_remote_port
>       if test $mode = cluster; then
>           upgrade_cluster "$schema" "unix:$sock"
>       fi
> +
> +    if test $run_ovsdb_in_bg = yes; then
> +        wait $process_id
> +    fi
>   }
>   
>   start_nb_ovsdb() {
> 



More information about the dev mailing list