[ovs-dev] [PATCH v4 0/3] Refactor OVSDB IDL into two layers

Ben Pfaff blp at ovn.org
Sat Dec 19 02:44:21 UTC 2020


This series breaks the IDL into two layers: the IDL proper, whose
interface to its client is unchanged, and a low-level library called
the OVSDB "client synchronization" (CS) library.  There are two
reasons for this change.  First, the IDL is big and complicated and
I think that this change factors out some of that complication into
a simpler lower layer.  Second, the OVN northd implementation based
on DDlog can benefit from the client synchronization library even
though it would actually be made increasingly complicated by the IDL.

v1->v2:
  - Add a few patches with trivial bug fixes and improvements to idl.
  - Make ovsdb-cs data structures exactly reproduce the ordering
    that the idl previously used, so that the behavior is exactly
    the same.  This fixes the behavior in the ovn-controller.  I am
    pretty convinced that there is a bug in the idl regarding change
    tracking, but these patches will not make it better or worse.
    There are lots of idl patches flying around on the mailing list
    currently; maybe one of those fixes the real problem.

v2->v3:
  - Rebase and integrate upstream changes.
  - Make change_seqno and conditional monitoring behavior reproduce
    the same behavior as the existing idl.  This fixes a test failure
    I was seeing after (but not before) rebase.
  - I don't see any failures in upstream ovn with this applied.
  - New patch "test-ovsdb: Log steps in idl test." that I found useful
    in debugging.

v3->v4:
  - Apply (and drop) several reviewed patches.
  - Log more and fix minor nits in "test-ovsdb: Log steps in idl test.".
  - Fix memory leak in ovsdb_cs_db_init() and in ovsdb_cs_send_transaction()
    in "ovsdb-idl: Break into two layers."

Ben Pfaff (3):
  test-ovsdb: Log steps in idl test.
  ovsdb-cs: New module that factors out code from ovsdb-idl.
  ovsdb-idl: Break into two layers.

 lib/automake.mk          |    2 +
 lib/ovsdb-cs.c           | 2281 ++++++++++++++++++++++++++++++++++++
 lib/ovsdb-cs.h           |  205 ++++
 lib/ovsdb-idl-provider.h |    8 +-
 lib/ovsdb-idl.c          | 2365 +++++++-------------------------------
 tests/test-ovsdb.c       |  266 ++---
 6 files changed, 3049 insertions(+), 2078 deletions(-)
 create mode 100644 lib/ovsdb-cs.c
 create mode 100644 lib/ovsdb-cs.h

-- 
2.28.0



More information about the dev mailing list