On Tue, Aug 30, 2016 at 09:04:10AM -0700, Jesse Gross wrote:
> On Sun, Aug 28, 2016 at 3:51 PM, Ryan Moats <rmo...@us.ibm.com> wrote:
> > diff --git a/ovn/controller/encaps.c b/ovn/controller/encaps.c
> > index d99ba05..844447f 100644
> > --- a/ovn/controller/encaps.c
> > +++ b/ovn/controller/encaps.c
> > +    SBREC_CHASSIS_FOR_EACH (chassis_rec, ctx->ovnsb_idl) {
> > +        for (int i = 0; i < chassis_rec->n_encaps; i++) {
> > +            encap_rec = chassis_rec->encaps[i];
> > +
> > +            struct encap_hash_node *encap_hash_node;
> > +            encap_hash_node = lookup_encap_uuid(&encap_rec->header_.uuid);
> > +            if (encap_hash_node) {
> > +                /* A change might have invalidated our mapping. Process the
> > +                 * new version and then iterate over everything to see if 
> > it
> > +                 * is OK. */
> > +                delete_encap_uuid(encap_hash_node);
> > +                poll_immediate_wake();
> >              }
> 
> Doesn't this result in essentially infinite wakeups? It used to be
> that this loop would run only when a chassis was add/removed/changed
> and so the if (encap_hash_node) condition would only trigger when an
> existing chassis is modified. However, after this change every wakeup
> will loop through all chassises and any existing ones will trigger
> another wakeup and loop, etc.
> 
> In general, I don't think it makes sense to remove incremental
> processing without removing persistent state. The result ends up being
> not very logical and actually more complicated.

I want to second Jesse's feedback here.  I think that this should really
be stateless, not half-incremental.

Thanks,

Ben.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to