[ovs-dev] [PATCH 2/2] ovs-appctl: Allow ovnnb_db and ovnsb_db as targets
Numan Siddique
nusiddiq at redhat.com
Wed Nov 8 03:18:25 UTC 2017
On Wed, Nov 8, 2017 at 8:39 AM, Ben Pfaff <blp at ovn.org> wrote:
> On Tue, Nov 07, 2017 at 09:01:27PM +0530, nusiddiq at redhat.com wrote:
> > From: Numan Siddique <nusiddiq at redhat.com>
> >
> > 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 <nusiddiq at redhat.com>
> > ---
> > 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.
>
Thanks Ben. Does it makes sense to fix logrotate script here -
https://github.com/openvswitch/ovs/blob/master/rhel/etc_logrotate.d_openvswitch
(and debian version)
to pass absolute path ?
Thanks
Numan
More information about the dev
mailing list