On Tue, Nov 07, 2017 at 09:01:27PM +0530, [email protected] wrote:
> From: Numan Siddique <[email protected]>
> 
> ovn-ctl starts OVN DB servers with the options "--unixctl=ovnnb_db"
> and "--unixctl=ovnsb_db". When "ovs-appctl -t ovnnb_db" is run the
> below error is seen
> 
> 2017-11-07T10:18:17Z|00001|unixctl|WARN|failed to connect to
> /var/run/openvswitch/ovnnb_db.29536.ctl.
> 
> This patch allows the targets "ovnnb_db" and ovndb_db" by not
> appending the pid to the socket path.
> 
> This issue has broken the openvswitch logrotate script because of
> the invalid socket path and results in the OVN DB log files not
> generated properly.
> 
> Other approach to fix is to not pass "--unixctl" option, in which case
> the ctl socket will be created as "ovsdb-server-<pid>.ctl". This would
> break the functions 'stop_nb_ovsdb', 'stop_sb_ovsdb', 'demote_ovnnb'
> and others. And we will not be able to use "ovnnb_db" and "ovnsd_db"
> as target options to 'ovs-appctl'.
> 
> Signed-off-by: Numan Siddique <[email protected]>
> ---
>  utilities/ovs-appctl.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/utilities/ovs-appctl.c b/utilities/ovs-appctl.c
> index 8f87cc4f6..b5a1a218b 100644
> --- a/utilities/ovs-appctl.c
> +++ b/utilities/ovs-appctl.c
> @@ -210,8 +210,18 @@ connect_to_target(const char *target)
>              ovs_fatal(-pid, "cannot read pidfile \"%s\"", pidfile_name);
>          }
>          free(pidfile_name);
> -        socket_name = xasprintf("%s/%s.%ld.ctl",
> -                                ovs_rundir(), target, (long int) pid);
> +
> +        /* If the target is ovnnb_db or ovnsb_db, then do not append the pid
> +         * to the socket_name. When OVN DB servers are started using ovn-ctl
> +         * they are started with the option
> +         * "--unixctl=ovnnb_db.ctl/ovnsb_db.ctl". */
> +        if (!strcmp(target, "ovnnb_db") || !strcmp(target, "ovnsb_db")) {
> +            socket_name = xasprintf("%s/%s.ctl", ovs_rundir(), target);
> +        } else {
> +            socket_name = xasprintf("%s/%s.%ld.ctl",
> +                                    ovs_rundir(), target, (long int) pid);
> +        }

This is extraordinarily specific to a particular use case.  It would be
better, I think, to have the ovs-appctl invocation pass the absolute
path to the target, in which case the filename will be used as-is,
without appending anything.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to