On Wed, Dec 21, 2016 at 10:56:35PM -0500, Russell Bryant wrote:
> On Wed, Dec 21, 2016 at 5:06 PM, Ben Pfaff <b...@ovn.org> wrote:
> 
> > On Wed, Dec 07, 2016 at 02:28:13PM -0500, Russell Bryant wrote:
> > > Signed-off-by: Russell Bryant <russ...@ovn.org>
> >
> > This procedure isn't what I expected.  It recommends:
> >
> >         1. Upgrade SB/NB databases and northd.
> >         2. Upgrade ovn-controller.
> >         3. Upgrade integration.
> >
> > I think that this is likely to cause problems in the common case,
> > because the new northd is likely to try to start using features that are
> > not yet available on the hypervisors, such as new logical match fields
> > and actions.
> >
> > I expected:
> >
> >         1. Upgrade ovn-controller.
> >         2. Upgrade SB/NB databases and northd.
> >         3. Upgrade integration.
> >
> > (I don't think that it matters when the databases are upgraded, though,
> > as long as they're upgraded before northd.)
> >
> 
> Thanks for the feedback!
> 
> There's a possible problem in this case, too.  ovn-controller could try to
> start using new fields in the southbound database that aren't there yet.

I guess that I have always considered that ovn-controller needs to
tolerate some version-related variation in the database schema.  This is
a familiar problem, since ovs-vsctl and (to a lesser extent)
ovs-vswitchd also need to tolerate similar variation.

Different kinds of tolerance must be considered.  Missing columns
(because they were added in a later database schema) are one of the
easiest, and the IDL takes care of that for us; the column will just
appear empty.  Over in OVS, we normally design the schema so that an
empty column yields the default new behavior anyhow.

The related_datapaths column that had been proposed for optimizing
conditional monitoring was a tougher case for upgrade.  With this
proposal, an empty column or a missing one would break ovn-controller,
since it wouldn't get all of the rows that it needed.  Even if the
column was present, it still wouldn't help if ovn-northd was too old to
populate it correctly.  I was about to propose that ovn-controller
needed to figure out not just whether the column was present but whether
ovn-northd was new enough and properly populating it, when I came up
with the approach we're now using that doesn't need this column at all.

So, upgrading the databases earlier cannot hurt, but I doubt that it
solves many problems.

> Maybe it should be:
> 
> 1. Upgrade SB/NB databases.
> 2. Upgrade ovn-controller.
> 3. Upgrade ovn-northd.
> 4. Upgrade integration.

This ordering seems fine to me.

Thank you for writing down the upgrade procedure.  (Have we written down
the installation procedure?)
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to