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

Reply via email to