[ovs-dev] ovsdb-server replication: Possible to exclude syncing specific column of a table??

Arunkumar Rg arunkumar.rg at gmail.com
Thu Aug 10 00:37:09 UTC 2017


Hi Ben,

Thanks for your response!

I have reported this to bugs at openvswitch.org.

Below is what I have shared to bugs at openvswitch.org.

Issue summary:
--------------
On setting, "ovsdb-server/set-sync-exclude-tables" for certain tables,
ovsdb-server replication does not work.
i.e the ovsdb-server which connects to the active ovsdb-server doesn't
become 'backup'.

Expected:
---------
ovsdb-server which connects to active ovsdb-server should become 'backup'
and recieve sync for all the tables except for the tables specified in the
ctl command "ovsdb-server/set-sync-exclude-tables".

Reproduction steps:
-------------------
["db:Hardware_vtep"---OVSDB-SERVER(Active)-(ptcp:3.1.1.2:7000
)-]------------------[-OVSDB-SERVER(Backup)---"db:Hardware_vtep"]

1. Start two ovsdb-server instances with db schema as "Hardware_vtep". Lets
call them instance-1 and instance-2.

ps -ef | grep ovsdb-server
root      2704  2093  0 19:56 ?        00:00:03 ovsdb-server
/opt/ovsdb/db/vtep.db --remote=punix:/opt/ovsdb/db/db.sock
--unixctl=/opt/ovsdb/ovsdb-server.ctl

2. At instance-1: Add an entry in 'Manager' table.
    vtep-ctl --db=unix:/opt/ovsdb/db/db.sock set-manager ssl:
10.133.130.126:6640

    ovsdb-client dump unix:/opt/ovsdb/db/db.sock    <<---showing only the
tables which is relevant to this issue.
    Global table
    _uuid                                managers
    other_config switches
    ------------------------------------
-------------------------------------- ------------ --------
    4121ba6c-a729-45b1-8f69-806b32584d04
[73affd9e-07f0-422f-a394-47ae2a1ab499] {}

    Manager table
    _uuid                                inactivity_probe is_connected
max_backoff other_config status  target
    ------------------------------------ ---------------- ------------
----------- ------------ ------- -------------------------
    73affd9e-07f0-422f-a394-47ae2a1ab499 []               false         []
         {}                  "ssl:10.133.130.126:6640"


3. Now do ovsdb replication related configs:
    3.1. At instance-1:
        ovs-appctl -t /opt/ovsdb/ovsdb-server.ctl ovsdb-server/add-remote
ptcp:7000:3.1.1.2

    3.2 At instance-2:
    ovs-appctl -t /opt/ovsdb/ovsdb-server.ctl
ovsdb-server/set-active-ovsdb-server tcp:3.1.1.2:7000
    ovs-appctl -t /opt/ovsdb/ovsdb-server.ctl
ovsdb-server/set-sync-exclude-tables hardware_vtep:Manager
    ovs-appctl -t /opt/ovsdb/ovsdb-server.ctl
ovsdb-server/connect-active-ovsdb-server

4. Issue reproduced now!!
    Instance-2 will not become 'Backup' and it'll remain in 'Active' state.

    This seem to be due to the following error, while processing the
notification for 'Global' table:

"Aug  9 12:26:38 Pollux daemon.err ovsdb-server:
ovs|00070|ovsdb_error|ERR|unexpected ovsdb error: referential integrity
violation: Table Global column managers row
4121ba6c-a729-45b1-8f69-806b32584d04 references nonexistent row
5dbedec1-8221-435f-89b3-503867d0e987 in t"

    Note: In the hardware_vtep schema, 'Global' table has a reference to
'Manager' table.

Additional inputs:
------------------
bash-3.2# ovsdb-server --version
ovsdb-server (Open vSwitch) 2.7.0

Linux version 4.1.14

Thanks,
Arun.


On Wed, Aug 9, 2017 at 9:27 PM, Ben Pfaff <blp at ovn.org> wrote:

> On Wed, Aug 09, 2017 at 05:34:16PM +0530, Arunkumar Rg wrote:
> > Hi All,
> >
> > I need a clarification on ovsdb-server replication's
> > set-sync-exclude-tables.
> >
> > *Is there a way, by which we can say exclude syncing specific column of a
> > table??*
> >
> > The use case I'm looking at is:
> >
> >    1. The replication is configured for DB "hardware_vtep".
> >    2. I'm trying to use the "ovsdb-server/set-sync-exclude-tables"
> unixctl
> >    command for table "hardware_vtep:Manager" on the backup ovsdb-server.
> >    3. After this the backup ovsdb-server gets replica(notification) from
> >    the active's db except for 'Manager' table.
> >    4. At this poiint, while processing the notification for 'Global'
> table,
> >    I see the below error:
> >    5. "Aug  9 12:26:38 Pollux daemon.err ovsdb-server:
> >    ovs|00070|ovsdb_error|ERR|unexpected ovsdb error: referential
> integrity
> >    violation: Table Global column managers row
> >    4121ba6c-a729-45b1-8f69-806b32584d04 references nonexistent row
> >    5dbedec1-8221-435f-89b3-503867d0e987 in t""
> >    6. I think this error could be avoided if we can say exclude syncing
> >    'Manager' column in 'Global' table also.
>
> It sounds like a bug.  Probably, you should report the bug and get it
> fixed, instead of trying to work around it.
>
> How can we reproduce the bug?
>


More information about the dev mailing list