diff options
Diffstat (limited to 'debian/openvswitch-switch.init')
-rwxr-xr-x | debian/openvswitch-switch.init | 12 |
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 |