diff mbox

[ovs-dev,v2] Avoid update probe interval to non-zero for unix socket.

Message ID 20170501181958.GZ10949@ovn.org
State Superseded
Headers show

Commit Message

Ben Pfaff May 1, 2017, 6:19 p.m. UTC
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@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.

--8<--------------------------cut here-------------------------->8--

From: Ben Pfaff <blp@ovn.org>
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 <nghosh@us.ibm.com>
Fixes: 715038b6b222 ("ovn-controller: reload configured SB probe timer")
Reported-by: Han Zhou <zhouhan@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
---
 ovn/controller/ovn-controller.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
diff mbox

Patch

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);
 }