As folks know, we've been working on scaling up OVN coupled
with openstack and we are now starting to hit issues in the
networking-ovn to NB DBconnection.

First, this code from ./ovsdb/execution.c (L693-707) looks
a bit funny:

if (!strcmp(json_string(until), "==") != equal) {
    if (timeout && x->elapsed_msec >= timeout_msec) {
        if (x->elapsed_msec) {
            error = ovsdb_error("timed out",
                                "\"wait\" timed out after %lld ms",
                                x->elapsed_msec);
        } else {
            error = ovsdb_error("timed out", "\"wait\" timed out");
        }
    } else {
        /* ovsdb_execute() will change this, if triggers really are
         * supported. */
        error = ovsdb_error("not supported", "triggers not supported");
    }
}

Specifically, returning a message for "timed out" when a
timeout of 0 seconds has been specified and the conditional
has not matched is misleading at best. I think it would make
more sense to say "wait condition not met" or something like
that.

The second issue is a bit more serious.  Right now, before the
networking-ovn IDL will add a new logical switch port and
associated ACLs (and if my memory serves me, it creates seven
for each port), there are a pair of wait clauses that have to
be met.  The first of these is that the ports and ACLs for
the Logical Switch have to have a particular list of UUIDs
in each, and each entire list is sent in the transaction.

Is this strictly necessary?  I ask because I'm looking at
scaling to a point where the wait condition will have
8000 uuids for the logical switch ports part and
56000 uuids for the ACLs part and I haven't yet figured
out why it is needed...

Ryan (planning on bringing this up at the Thursday IRC
meeting)
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to