From 294a2a769317a2c74ee318218fee860e00713dcc Mon Sep 17 00:00:00 2001 From: Jipan Yang Date: Thu, 16 Aug 2018 12:21:55 -0700 Subject: [PATCH 1/3] Don't load json conifg like copp, ininip, ports and switch again upon swss warm start Signed-off-by: Jipan Yang --- dockers/docker-orchagent/swssconfig.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dockers/docker-orchagent/swssconfig.sh b/dockers/docker-orchagent/swssconfig.sh index 850a4afd1ef5..1d53bd4269e9 100755 --- a/dockers/docker-orchagent/swssconfig.sh +++ b/dockers/docker-orchagent/swssconfig.sh @@ -41,6 +41,18 @@ fast_reboot HWSKU=`sonic-cfggen -d -v "DEVICE_METADATA['localhost']['hwsku']"` +# Don't load json config if system warm start or +# swss docker warm start is enabled, the data already exists in appDB. +WARM_START=`redis-cli -n 4 hget "WARM_RESTART|system" enable` +if [ "$WARM_START" == "true" ]; then + exit 0 +fi + +WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable` +if [ "$WARM_START" == "true" ]; then + exit 0 +fi + SWSSCONFIG_ARGS="00-copp.config.json ipinip.json ports.json switch.json " for file in $SWSSCONFIG_ARGS; do From 3aca62d4c9451d0ee1c1ce059ecc17dc4159851d Mon Sep 17 00:00:00 2001 From: Jipan Yang Date: Mon, 20 Aug 2018 19:32:05 -0700 Subject: [PATCH 2/3] double check DB data exists in case only swss warm restart is configured at system reboot Signed-off-by: Jipan Yang --- dockers/docker-orchagent/swssconfig.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dockers/docker-orchagent/swssconfig.sh b/dockers/docker-orchagent/swssconfig.sh index 1d53bd4269e9..51208e253be9 100755 --- a/dockers/docker-orchagent/swssconfig.sh +++ b/dockers/docker-orchagent/swssconfig.sh @@ -50,7 +50,11 @@ fi WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable` if [ "$WARM_START" == "true" ]; then - exit 0 + # We have to make sure db data has not been flushed. + WARM_START=`redis-cli -n 6 hget "WARM_RESTART_TABLE|orchagent" restart_count` + if [ -n "$WARM_START" ] && [ "$WARM_START" != "0" ]; then + exit 0 + fi fi SWSSCONFIG_ARGS="00-copp.config.json ipinip.json ports.json switch.json " From 63baa3b2e9913dc7cd257ece36ce0655a0b146bc Mon Sep 17 00:00:00 2001 From: Jipan Yang Date: Tue, 21 Aug 2018 15:45:38 -0700 Subject: [PATCH 3/3] Double check existence of db data before skipping json load, and format update Signed-off-by: Jipan Yang --- dockers/docker-orchagent/swssconfig.sh | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/dockers/docker-orchagent/swssconfig.sh b/dockers/docker-orchagent/swssconfig.sh index 51208e253be9..7188703d23ea 100755 --- a/dockers/docker-orchagent/swssconfig.sh +++ b/dockers/docker-orchagent/swssconfig.sh @@ -43,18 +43,14 @@ HWSKU=`sonic-cfggen -d -v "DEVICE_METADATA['localhost']['hwsku']"` # Don't load json config if system warm start or # swss docker warm start is enabled, the data already exists in appDB. -WARM_START=`redis-cli -n 4 hget "WARM_RESTART|system" enable` -if [ "$WARM_START" == "true" ]; then - exit 0 -fi - -WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable` -if [ "$WARM_START" == "true" ]; then +SYSTEM_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|system" enable` +SWSS_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable` +if [[ "$SYSTEM_WARM_START" == "true" ]] || [[ "$SWSS_WARM_START" == "true" ]]; then # We have to make sure db data has not been flushed. - WARM_START=`redis-cli -n 6 hget "WARM_RESTART_TABLE|orchagent" restart_count` - if [ -n "$WARM_START" ] && [ "$WARM_START" != "0" ]; then - exit 0 - fi + RESTART_COUNT=`redis-cli -n 6 hget "WARM_RESTART_TABLE|orchagent" restart_count` + if [[ -n "$RESTART_COUNT" ]] && [[ "$RESTART_COUNT" != "0" ]]; then + exit 0 + fi fi SWSSCONFIG_ARGS="00-copp.config.json ipinip.json ports.json switch.json "