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
