On Tue, Jul 19, 2016 at 3:45 PM, Ben Pfaff <b...@ovn.org> wrote: > On Tue, Jul 19, 2016 at 10:06:09AM -0400, Russell Bryant wrote: > > On Mon, Jul 18, 2016 at 2:30 PM, Ben Pfaff <b...@ovn.org> wrote: > > > > > Until now, there has been no reliable for the CMS (or ovn-nbctl, or > > > anything else) to detect when changes made to the northbound > configuration > > > have been passed through to the southbound database or to the > hypervisors. > > > This commit adds this feature to the system, by adding sequence numbers > > > to the northbound and southbound databases and adding code in > ovn-nbctl, > > > ovn-northd, and ovn-controller to keep those sequence numbers > up-to-date. > > > > > > The biggest user-visible change from this commit is new a new option > > > --wait to ovn-nbctl. With --wait=sb, ovn-nbctl now waits for > ovn-northd > > > to update the southbound database; with --wait=hv, it waits for the > > > changes to make their way to Open vSwitch on every hypervisor. > > > > > > Signed-off-by: Ben Pfaff <b...@ovn.org> > > > --- > > > v1->v2: Rebase to fix up database version number. > > > > > > > Cool feature. :-) > > > > Thanks a lot for the detailed documentation. That made it easy to > > understand how this is to be used. > > > > I was trying to decide if the OpenStack Neutron plugin would make use of > > this. We currently use the 'up' column of Logical_Switch_Port. As you > > point out in docs, "up" means something different, as it signals the > > successful binding of a port to a chassis. I think that's really what we > > want and would continue using. > > > > A downside I thought of to using this from something like Neutron is that > > it would block the whole cloud any time there's any sort of problem with > > any hypervisor, which I don't think is desirable. > > > > The feature still sounds very useful for testing and debugging, at a > > minimum. > > > > If this all makes sense, then I can proceed with a more detailed review > of > > the implementation. > > > > Thanks, > > That makes sense to me. > > I don't envision a CMS using this on a per-transaction basis. As you > say, it's mostly for testing and debugging. I can see it being useful > in a couple of ways: > > * First, with some elaboration, a technique like this could be > used to determine that finer-grained components are up to > date. For example, a logical switch is physically distributed > across a certain set of hypervisors; we could add an hv_cfg > column to the Logical_Switch table to indicate how up-to-date > the logical switch is (and have ovn-northd populate it). > > * Second, it may be useful for monitoring. If the system is > taking a long time to get up-to-date, then it's a signal to > look closer. >
Thanks! Makes sense to me, too. > > + /* Track the flow update. */ > > > + struct ofctrl_flow_update *fup, *prev; > > > + LIST_FOR_EACH_REVERSE_SAFE (fup, prev, list_node, > &flow_updates) { > > > + if (nb_cfg < fup->nb_cfg) { > > > + /* This ofctrl_flow_update is for a configuration > later > > > than > > > + * 'nb_cfg'. This should not normally happen, > because it > > > means > > > + * that 'nb_cfg' in the SB_Global table of the > southbound > > > + * database decreased, and it should normally be > > > monotonically > > > + * increasing. */ > > > > > > > Would this also get hit if nb_cfg overflows? > > > > That would sure be a *lot* of transactions, though ... > > By my calculations, if we increment nb_cfg a million times a second, it > would almost 300,000 years to overflow back to -2**63. By then, it's > likely that our users will have moved on to something new. > lol. I *guess* it's ok, then. -- Russell Bryant _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev