[ovs-dev] [PATCH] ovsdb: Implement garbage collection.
Ethan Jackson
ethan at nicira.com
Thu Mar 10 11:11:35 PST 2011
Thanks for writing these up. Both incrementals look good. Two very
minor aesthetic comments. Go ahead and push.
+ If "isRoot" is omitted or specified as false, then any given row
+ in the table may exist only when it there is at least one
"only when there is"
- def to_json(self):
+ def to_json(self, default_is_root=False):
+ """Returns this table schema serialized into JSON.
+
+ The "isRoot" member is included in the JSON only if its value would
Trailing whitespace here.
Ethan
On Wed, Mar 9, 2011 at 3:56 PM, Ben Pfaff <blp at nicira.com> wrote:
> Here's an additional incremental that should be applied on top. I
> haven't tested it yet.
>
> diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
> index 92ab775..8ea5866 100755
> --- a/debian/openvswitch-switch.init
> +++ b/debian/openvswitch-switch.init
> @@ -232,6 +232,18 @@ case "$1" in
> cksum=`ovsdb-tool db-cksum "$conf_file" | awk '{print $1}'`
> cp "$conf_file" "$conf_file.backup$version-$cksum"
>
> + # 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": true) but the new schema does. In that situation
> + # the old database may contain a transaction that creates a record
> + # followed by a transaction that creates the first use of the
> + # record. Replaying that series of transactions against the new
> + # database schema (as "convert" 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).
> + ovsdb-tool -vANY:console:emer compact $conf_file
> +
> # Upgrade or downgrade schema and compact database.
> ovsdb-tool -vANY:console:emer convert $conf_file $schema_file
> fi
> diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch
> index 13b9d40..7300981 100755
> --- a/xenserver/etc_init.d_openvswitch
> +++ b/xenserver/etc_init.d_openvswitch
> @@ -341,7 +341,18 @@ function start {
> cksum=`$ovsdb_tool db-cksum "$OVSDB_SERVER_DB" | awk '{print $1}'`
> cp "$OVSDB_SERVER_DB" "$OVSDB_SERVER_DB.backup$version-$cksum"
>
> - # Upgrade or downgrade schema and compact database.
> + # 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":
> + # true) but the new schema does. In that situation the old database
> + # may contain a transaction that creates a record followed by a
> + # transaction that creates the first use of the record. Replaying that
> + # series of transactions against the new database schema (as "convert"
> + # 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).
> + $ovsdb_tool -vANY:console:emer compact "$OVSDB_SERVER_DB"
> +
> + # Upgrade or downgrade schema.
> $ovsdb_tool -vANY:console:emer convert "$OVSDB_SERVER_DB" "$VSWITCHD_OVSDB_SCHEMA"
> fi
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list