Using "monitor" for _Server means that every bump to Database.index
sends a large "update"  notification containing a lot of data
including the Database schema text. This updates the Python IDL to
use "monitor_cond" as the C IDL does.

There is a difference in logic between the two IDL implementations.
Python IDL's Idl takes a SchemaHelper object as a required object
for instantiation, while the C IDL will transition through calling
"get_schema" on first the _Server DB and data DB if that errors out.
Although the Python version calls get_schema for _Server, it has
never called it on data, presumably because the schema is passed at
instantiation.

This implementation instead of adding support for getting and using
the schema via "get_schema" on the data db, transitions from an
error retreiving the schema from _Server to directly monitoring the
data DB (since we already were passed a schema at instantiation).

It would be good to, in the future, add support for not having to
specify the schema at Idl creation, but that kind of API change
should be done on its own (hopefully in a backward-compatible way).

Terry Wilson (2):
  ovsdb-idl: Add C IDL test for "monitor" fallback
  python: ovsdb-idl: Use monitor_cond for _Server DB

 python/ovs/db/idl.py | 28 ++++++++++++++--------------
 tests/ovsdb-idl.at   | 16 +++++++++++++++-
 2 files changed, 29 insertions(+), 15 deletions(-)

-- 
2.34.3

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to