[ovs-dev] [PATCH v1 ovn] ovn-nb/sbctl.c: Set no-leader-only as default for clustered dbs

amginwal at gmail.com amginwal at gmail.com
Wed Oct 2 00:05:28 UTC 2019


From: Aliasgar Ginwala <aginwala at ebay.com>

When using ovn-nb/sbctl running in cluster, one can use local
socket to run different commands. It is very inconvenient to pass
no-leader-only in different tools using ovn-nb/sbctl instead of
allowing one to to connect to any nodes in the cluster including
itself.
e.g common usage ovn-nb/sbctl show.
Hence, this commit handles the same.

Signed-off-by: Aliasgar Ginwala <aginwala at ebay.com>
---
 utilities/ovn-nbctl.8.xml | 17 +++++++++--------
 utilities/ovn-nbctl.c     |  3 ++-
 utilities/ovn-sbctl.8.in  | 18 +++++++++---------
 utilities/ovn-sbctl.c     |  2 +-
 4 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/utilities/ovn-nbctl.8.xml b/utilities/ovn-nbctl.8.xml
index fd75c0e44..3dd05fa65 100644
--- a/utilities/ovn-nbctl.8.xml
+++ b/utilities/ovn-nbctl.8.xml
@@ -1192,14 +1192,15 @@
     <dt><code>--leader-only</code></dt>
     <dt><code>--no-leader-only</code></dt>
     <dd>
-      By default, or with <code>--leader-only</code>, when the database server
-      is a clustered database, <code>ovn-nbctl</code> will avoid servers other
-      than the cluster leader.  This ensures that any data that
-      <code>ovn-nbctl</code> reads and reports is up-to-date.  With
-      <code>--no-leader-only</code>, <code>ovn-nbctl</code> will use any server
-      in the cluster, which means that for read-only transactions it can report
-      and act on stale data (transactions that modify the database are always
-      serialized even with <code>--no-leader-only</code>).  Refer to
+      By default, or with <code>--no-leader-only</code>, when the database
+      server is a clustered database, <code>ovn-nbctl</code> may connect to
+      any server in the cluster, which means that for read-only transactions
+      it can report and act on stale data (transactions that modify the
+      database are always serialized even with <code>--no-leader-only</code>).
+      To avoid reading stale data, one can specify <code>--leader-only</code>,
+      so that <code>ovn-nbctl</code> will avoid servers other than the cluster
+      leader. For daemon mode, since it is for long running connections,
+      default is set to <code>--leader-only</code>. Refer to
       <code>Understanding Cluster Consistency</code> in <code>ovsdb</code>(7)
       for more information.
     </dd>
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index a89a9cb4d..3804dd25a 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -81,7 +81,7 @@ static struct ovsdb_idl_txn *the_idl_txn;
 OVS_NO_RETURN static void nbctl_exit(int status);
 
 /* --leader-only, --no-leader-only: Only accept the leader in a cluster. */
-static int leader_only = true;
+static int leader_only = false;
 
 /* --shuffle-remotes, --no-shuffle-remotes: Shuffle the order of remotes that
  * are specified in the connetion method string. */
@@ -188,6 +188,7 @@ main(int argc, char *argv[])
                       "(use --help for help)");
         }
         daemon_mode = true;
+        leader_only = true;
     }
     /* Initialize IDL. */
     idl = the_idl = ovsdb_idl_create_unconnected(&nbrec_idl_class, true);
diff --git a/utilities/ovn-sbctl.8.in b/utilities/ovn-sbctl.8.in
index 2aaa457e8..f52412812 100644
--- a/utilities/ovn-sbctl.8.in
+++ b/utilities/ovn-sbctl.8.in
@@ -53,16 +53,16 @@ e.g. \fBssl:192.168.10.5:6640\fR, as described in \fBovsdb\fR(7).
 .
 .IP "\fB\-\-leader\-only\fR"
 .IQ "\fB\-\-no\-leader\-only\fR"
-By default, or with \fB\-\-leader\-only\fR, when the database server
-is a clustered database, \fBovn\-sbctl\fR will avoid servers other
-than the cluster leader.  This ensures that any data that
-\fBovn\-sbctl\fR reads and reports is up-to-date.  With
-\fB\-\-no\-leader\-only\fR, \fBovn\-sbctl\fR will use any server in
-the cluster, which means that for read-only transactions it can report
+By default, or with \fB\-\-no\-leader\-only\fR, when the database server
+is a clustered database, \fBovn\-sbctl\fR may connect to any server
+in the cluster, which means that for read-only transactions it can report
 and act on stale data (transactions that modify the database are
-always serialized even with \fB\-\-no\-leader\-only\fR).  Refer to
-\fBUnderstanding Cluster Consistency\fR in \fBovsdb\fR(7) for more
-information.
+always serialized even with \fB\-\-no\-leader\-only\fR). To avoid reading
+stale data, one can specify \fB\-\-leader\-only\fR, so that
+\fBovn\-sbctl\fR will avoid servers other than the cluster leader. For daemon
+mode, since it is for long running connections, default is set to
+\fB\-\-leader\-only\fR. Refer to \fBUnderstanding Cluster Consistency\fR in
+\fBovsdb\fR(7) for more information.
 .
 .IP "\fB\-\-no\-syslog\fR"
 By default, \fBovn\-sbctl\fR logs its arguments and the details of any
diff --git a/utilities/ovn-sbctl.c b/utilities/ovn-sbctl.c
index 9a9b6f0ec..f1cb8790f 100644
--- a/utilities/ovn-sbctl.c
+++ b/utilities/ovn-sbctl.c
@@ -82,7 +82,7 @@ static struct ovsdb_idl_txn *the_idl_txn;
 OVS_NO_RETURN static void sbctl_exit(int status);
 
 /* --leader-only, --no-leader-only: Only accept the leader in a cluster. */
-static int leader_only = true;
+static int leader_only = false;
 
 static void sbctl_cmd_init(void);
 OVS_NO_RETURN static void usage(void);
-- 
2.20.1 (Apple Git-117)



More information about the dev mailing list