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

This reverts commit 02b17839c3.

Reverts #14933

The earlier commit caused a race condition that particularly broke cross branch warm upgrade.

Issue happens when db_migrator is still migrating the DB and finalizer is checking DB for list of components to reconcile.

If migration is not complete, finalizer get an empty list to wait for. Due to this, finalizer concludes warmboot (deletes system wide warmboot flag) and cause all the services to do cold restart.

ADO: 24274591
This commit is contained in:
Vaibhav Hemant Dixit 2023-06-16 13:58:38 -07:00 committed by mssonicbld
parent 8195e33120
commit b62231566b
2 changed files with 4 additions and 25 deletions

View File

@ -255,20 +255,12 @@ function postStartAction()
$SONIC_DB_CLI CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1" $SONIC_DB_CLI CONFIG_DB SET "CONFIG_DB_INITIALIZED" "1"
fi fi
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 if [[ -x /usr/local/bin/db_migrator.py ]]; then
# Migrate the DB to the latest schema version if needed # Migrate the DB to the latest schema version if needed
if [ -z "$DEV" ]; then if [ -z "$DEV" ]; then
/usr/local/bin/db_migrator.py -o migrate /usr/local/bin/db_migrator.py -o migrate
fi fi
fi fi
fi
# Add redis UDS to the redis group and give read/write access to the group # Add redis UDS to the redis group and give read/write access to the group
REDIS_SOCK="/var/run/redis${DEV}/redis.sock" REDIS_SOCK="/var/run/redis${DEV}/redis.sock"
else else

View File

@ -300,16 +300,6 @@ check_all_config_db_present()
return 0 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. # Perform configuration migration from backup copy.
# - This step is performed when a new image is installed and SONiC switch boots into it # - This step is performed when a new image is installed and SONiC switch boots into it
do_config_migration() do_config_migration()
@ -332,19 +322,16 @@ do_config_migration()
if [ x"${WARM_BOOT}" == x"true" ]; then if [ x"${WARM_BOOT}" == x"true" ]; then
echo "Warm reboot detected..." echo "Warm reboot detected..."
disable_updategraph disable_updategraph
do_db_migration
rm -f /tmp/pending_config_migration rm -f /tmp/pending_config_migration
exit 0 exit 0
elif check_all_config_db_present; then elif check_all_config_db_present; then
echo "Use config_db.json from old system..." echo "Use config_db.json from old system..."
reload_configdb reload_configdb
do_db_migration
# Disable updategraph # Disable updategraph
disable_updategraph disable_updategraph
elif [ -r ${MINGRAPH_FILE} ]; then elif [ -r ${MINGRAPH_FILE} ]; then
echo "Use minigraph.xml from old system..." echo "Use minigraph.xml from old system..."
reload_minigraph reload_minigraph
do_db_migration
# Disable updategraph # Disable updategraph
disable_updategraph disable_updategraph
else else