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