aboutsummaryrefslogtreecommitdiff
path: root/debian/openvswitch-switch.init
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-03-10 11:15:01 -0800
committerBen Pfaff <blp@nicira.com>2011-03-10 11:24:00 -0800
commitc5f341ab193b9126dffef8c77bf8ed35e91290fd (patch)
treef44aae0db39ec6f5c1001535b19fe511333492d2 /debian/openvswitch-switch.init
parent7f90cb0efe782cbbfb2557d81cf0f9de21e12435 (diff)
ovsdb: Implement garbage collection.
Diffstat (limited to 'debian/openvswitch-switch.init')
-rwxr-xr-xdebian/openvswitch-switch.init12
1 files changed, 12 insertions, 0 deletions
diff --git a/debian/openvswitch-switch.init b/debian/openvswitch-switch.init
index 92ab7756..8ea58660 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