[ovs-dev] [PATCH v2] Avoid update probe interval to non-zero for unix socket.
Han Zhou
zhouhan at gmail.com
Tue May 2 00:31:54 UTC 2017
On Mon, May 1, 2017 at 11:19 AM, Ben Pfaff <blp at ovn.org> wrote:
>
> On Tue, Apr 18, 2017 at 11:12:14AM -0700, Han Zhou wrote:
> > In commit c1bfdd9d it disables probe when not needed, but commit
> > 715038b6 updates ovn-controller probe interval for OVNSB DB
> > periodically according to ovn-remote-probe-interval config, and sets
> > it to DEFAULT_PROBE_INTERVAL_MSEC if not configured, even if the
> > connection type is unix socket which doesn't need probe.
> >
> > This fix avoids probe interval update if not needed (always set to 0).
> >
> > Signed-off-by: Han Zhou <zhouhan at gmail.com>
> > ---
> >
> > Notes:
> > v1->v2: fix commit id mentioned in commit message.
>
> Thanks for reporting and fixing this bug. I agree there's a bug here,
> but I'd rather honor the user's explicit request to set a nonzero probe
> interval, if there is such a request in ovsdb.
>
> How about this? I have not tested it, beyond verifying that it
> compiles.
>
> Thanks,
>
> Ben.
>
Yes, this idea is better. But the code has a problem.
> @@ -933,6 +934,8 @@ update_probe_interval(struct controller_ctx *ctx)
> ? smap_get_int(&cfg->external_ids,
> "ovn-remote-probe-interval",
> DEFAULT_PROBE_INTERVAL_MSEC)
> - : DEFAULT_PROBE_INTERVAL_MSEC);
> + : stream_or_pstream_needs_probes(ovnsb_remote)
> + ? DEFAULT_PROBE_INTERVAL_MSEC
> + : 0);
Here is the fix (tested):
--8<--------------------------cut here-------------------------->8--
diff --git a/ovn/controller/ovn-controller.c
b/ovn/controller/ovn-controller.c
index e00f57a..d7423ab 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -64,7 +64,8 @@ static unixctl_cb_func inject_pkt;
#define DEFAULT_BRIDGE_NAME "br-int"
#define DEFAULT_PROBE_INTERVAL_MSEC 5000
-static void update_probe_interval(struct controller_ctx *);
+static void update_probe_interval(struct controller_ctx *,
+ const char *ovnsb_remote);
static void parse_options(int argc, char *argv[]);
OVS_NO_RETURN static void usage(void);
@@ -594,7 +595,7 @@ main(int argc, char *argv[])
.ovnsb_idl_txn = ovsdb_idl_loop_run(&ovnsb_idl_loop),
};
- update_probe_interval(&ctx);
+ update_probe_interval(&ctx, ovnsb_remote);
update_ssl_config(ctx.ovs_idl);
@@ -925,14 +926,21 @@ inject_pkt(struct unixctl_conn *conn, int argc
OVS_UNUSED,
/* Get the desired SB probe timer from the OVS database and configure it
into
* the SB database. */
static void
-update_probe_interval(struct controller_ctx *ctx)
+update_probe_interval(struct controller_ctx *ctx, const char *ovnsb_remote)
{
const struct ovsrec_open_vswitch *cfg
= ovsrec_open_vswitch_first(ctx->ovs_idl);
- int interval = (cfg
- ? smap_get_int(&cfg->external_ids,
- "ovn-remote-probe-interval",
- DEFAULT_PROBE_INTERVAL_MSEC)
- : DEFAULT_PROBE_INTERVAL_MSEC);
+ int interval = -1;
+ if (cfg) {
+ interval = smap_get_int(&cfg->external_ids,
+ "ovn-remote-probe-interval",
+ -1);
+ }
+ if (interval == -1) {
+ interval = stream_or_pstream_needs_probes(ovnsb_remote)
+ ? DEFAULT_PROBE_INTERVAL_MSEC
+ : 0;
+ }
+
ovsdb_idl_set_probe_interval(ctx->ovnsb_idl, interval);
}
More information about the dev
mailing list