Thanks. I tested these a little and pushed them.
On Mon, Jul 25, 2011 at 01:39:42PM -0700, Ethan Jackson wrote: > Looks Good. > > Ethan > > On Thu, Jul 7, 2011 at 12:48, Ben Pfaff <[email protected]> wrote: > > If the "ovsdb-tool convert" call fails, it is likely because the database > > has bad contents that this version of OVSDB does not understand. ?In that > > case, we're better off using a fresh, empty database rather than failing > > to come up at all. > > > > Bug #6280. > > --- > > ?utilities/ovs-ctl.in | ? 23 ++++++++++++++++++----- > > ?1 files changed, 18 insertions(+), 5 deletions(-) > > > > diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in > > index 6bc81b7..1193e9d 100755 > > --- a/utilities/ovs-ctl.in > > +++ b/utilities/ovs-ctl.in > > @@ -59,20 +59,23 @@ ovsdb_tool () { > > ? ? ovsdb-tool -vANY:console:emer "$@" > > ?} > > > > +create_db () { > > + ? ?action "Creating empty database $DB_FILE" true > > + ? ?ovsdb_tool create "$DB_FILE" "$DB_SCHEMA" > > +} > > + > > ?upgrade_db () { > > ? ? schemaver=`ovsdb_tool schema-version "$DB_SCHEMA"` > > ? ? if test ! -e "$DB_FILE"; then > > ? ? ? ? log_warning_msg "$DB_FILE does not exist" > > ? ? ? ? install -d -m 755 -o root -g root `dirname $DB_FILE` > > - > > - ? ? ? ?action "Creating empty database $DB_FILE" true > > - ? ? ? ?ovsdb_tool create "$DB_FILE" "$DB_SCHEMA" > > + ? ? ? ?create_db > > ? ? elif test X"`ovsdb_tool needs-conversion "$DB_FILE" "$DB_SCHEMA"`" != > > Xno; then > > ? ? ? ? # Back up the old version. > > ? ? ? ? version=`ovsdb_tool db-version "$DB_FILE"` > > ? ? ? ? cksum=`ovsdb_tool db-cksum "$DB_FILE" | awk '{print $1}'` > > ? ? ? ? backup=$DB_FILE.backup$version-$cksum > > - ? ? ? ?action "Backing up database to $backup" cp "$DB_FILE" "$backup" > > + ? ? ? ?action "Backing up database to $backup" cp "$DB_FILE" "$backup" || > > return 1 > > > > ? ? ? ? # Compact database. ?This is important if the old schema did not > > enable > > ? ? ? ? # garbage collection (i.e. if it did not have any tables with > > "isRoot": > > @@ -83,10 +86,20 @@ upgrade_db () { > > ? ? ? ? # does) would cause the record to be dropped by the first > > transaction, > > ? ? ? ? # then the second transaction would cause a referential integrity > > ? ? ? ? # failure (for a strong reference). > > + ? ? ? ?# > > + ? ? ? ?# Errors might occur on an Open vSwitch downgrade if ovsdb-tool > > doesn't > > + ? ? ? ?# understand some feature of the schema used in the OVSDB version > > that > > + ? ? ? ?# we're downgrading from, so we don't give up on error. > > ? ? ? ? action "Compacting database" ovsdb_tool compact "$DB_FILE" > > > > ? ? ? ? # Upgrade or downgrade schema. > > - ? ? ? ?action "Converting database schema" ovsdb_tool convert "$DB_FILE" > > "$DB_SCHEMA" > > + ? ? ? ?if action "Converting database schema" ovsdb_tool convert > > "$DB_FILE" "$DB_SCHEMA"; then > > + ? ? ? ? ? ?: > > + ? ? ? ?else > > + ? ? ? ? ? ?log_warning_msg "Schema conversion failed, using empty > > database instead" > > + ? ? ? ? ? ?rm -f "$DB_FILE" > > + ? ? ? ? ? ?create_db > > + ? ? ? ?fi > > ? ? fi > > ?} > > > > -- > > 1.7.4.4 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
