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
set -- "$@" --log-file=/var/log/openvswitch/ovsdb-server.log
set -- "$@" --detach --no-chdir --pidfile $monitor_opt
set -- "$@" --remote punix:/var/run/openvswitch/db.sock
- set -- "$@" --remote db:Open_vSwitch,managers
set -- "$@" --remote db:Open_vSwitch,manager_options
set -- "$@" --private-key=db:SSL,private_key
set -- "$@" --certificate=db:SSL,certificate