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 <[email protected]> > --- > > 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. --8<--------------------------cut here-------------------------->8-- From: Ben Pfaff <[email protected]> Date: Mon, 1 May 2017 11:18:20 -0700 Subject: [PATCH] ovn-controller: Disable probes by default for unix sockets. Normally the OVS JSON-RPC library does not probe idle connections across Unix domain sockets, since the kernel can tell OVS whether the connections are truly connected without probes, but ovn-controller carelessly overrode that. (This should not be an issue in typical OVN deployments, because the OVN SB database is normally accessed via TCP or SSL.) CC: Nirapada Ghosh <[email protected]> Fixes: 715038b6b222 ("ovn-controller: reload configured SB probe timer") Reported-by: Han Zhou <[email protected]> Signed-off-by: Ben Pfaff <[email protected]> --- ovn/controller/ovn-controller.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c index e00f57ad5516..4e433d2b6378 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,7 +926,7 @@ 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); @@ -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); ovsdb_idl_set_probe_interval(ctx->ovnsb_idl, interval); } -- 2.10.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
