Fix for fast/cold-boot: call db_migrator only after old config is loaded (#14933) (#15317)

This commit is contained in:
mssonicbld 2023-06-03 09:16:42 +08:00 committed by GitHub
parent dd989a64d7
commit 084564bdde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 4 deletions

View File

@ -255,10 +255,18 @@ function postStartAction()
$SONIC_DB_CLI CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
fi
if [[ -x /usr/local/bin/db_migrator.py ]]; then
# Migrate the DB to the latest schema version if needed
if [ -z "$DEV" ]; then
/usr/local/bin/db_migrator.py -o migrate
if [ -e /tmp/pending_config_migration ]; then
# this is first boot to a new image, config-setup execution is pending.
# For fast/cold reboot case, DB contains nothing at this point
# Call db_migrator after config-setup loads the config (from old config or minigraph)
echo "Delaying db_migrator until config migration is over"
else
# this is not a first time boot to a new image. Datbase container starts w/ old pre-existing config
if [[ -x /usr/local/bin/db_migrator.py ]]; then
# Migrate the DB to the latest schema version if needed
if [ -z "$DEV" ]; then
/usr/local/bin/db_migrator.py -o migrate
fi
fi
fi
# Add redis UDS to the redis group and give read/write access to the group

View File

@ -300,6 +300,16 @@ check_all_config_db_present()
return 0
}
# DB schema is subject to change between two images
# Perform DB schema migration after loading backup config from previous image
do_db_migration()
{
if [[ -x /usr/local/bin/db_migrator.py ]]; then
# Migrate the DB to the latest schema version if needed
/usr/local/bin/db_migrator.py -o migrate
fi
}
# Perform configuration migration from backup copy.
# - This step is performed when a new image is installed and SONiC switch boots into it
do_config_migration()
@ -322,16 +332,19 @@ do_config_migration()
if [ x"${WARM_BOOT}" == x"true" ]; then
echo "Warm reboot detected..."
disable_updategraph
do_db_migration
rm -f /tmp/pending_config_migration
exit 0
elif check_all_config_db_present; then
echo "Use config_db.json from old system..."
reload_configdb
do_db_migration
# Disable updategraph
disable_updategraph
elif [ -r ${MINGRAPH_FILE} ]; then
echo "Use minigraph.xml from old system..."
reload_minigraph
do_db_migration
# Disable updategraph
disable_updategraph
else