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") Signed-off-by: Han Zhou <[email protected]> Co-authored-by: Ben Pfaff <[email protected]> --- ovn/controller/ovn-controller.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c index 5fa900d..c18582a 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); } -- 2.1.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
