From fe096e75fc2fbd2070e0d0bf61c01cf196ab6908 Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Mon, 9 Oct 2023 14:22:09 +0000 Subject: [PATCH 1/2] Graceful shutdown of syncd process in container gbsyncd --- files/scripts/gbsyncd.sh | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/files/scripts/gbsyncd.sh b/files/scripts/gbsyncd.sh index 0948aaadc199..7790a131f8ed 100755 --- a/files/scripts/gbsyncd.sh +++ b/files/scripts/gbsyncd.sh @@ -19,7 +19,32 @@ function waitplatform() { } function stopplatform1() { - : + # Invoke platform specific pre shutdown routine. + PLATFORM=`$SONIC_DB_CLI CONFIG_DB hget 'DEVICE_METADATA|localhost' platform` + PLATFORM_PRE_SHUTDOWN="/usr/share/sonic/device/$PLATFORM/plugins/gbsyncd_request_pre_shutdown" + [ -f $PLATFORM_PRE_SHUTDOWN ] && \ + /usr/bin/docker exec -i gbsyncd$DEV /usr/share/sonic/platform/plugins/gbsyncd_request_pre_shutdown --${TYPE} + + debug "${TYPE} shutdown syncd process in container gbsyncd$DEV ..." + /usr/bin/docker exec -i gbsyncd$DEV /usr/bin/syncd_request_shutdown -g 1 --${TYPE} + + # wait until syncd quits gracefully or force syncd to exit after + # waiting for 20 seconds + start_in_secs=${SECONDS} + end_in_secs=${SECONDS} + timer_threshold=20 + while docker top gbsyncd$DEV | grep -q /usr/bin/syncd \ + && [[ $((end_in_secs - start_in_secs)) -le $timer_threshold ]]; do + sleep 0.1 + end_in_secs=${SECONDS} + done + + if [[ $((end_in_secs - start_in_secs)) -gt $timer_threshold ]]; then + debug "syncd process in container gbsyncd$DEV did not exit gracefully" + fi + + /usr/bin/docker exec -i gbsyncd$DEV /bin/sync + debug "Finished ${TYPE} shutdown syncd process in container gbsyncd$DEV ..." } function stopplatform2() { From ef708cb5de36093f8cb670617a1661cede4749cf Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Wed, 1 Nov 2023 04:11:23 +0000 Subject: [PATCH 2/2] Specify param contect_config file --- files/scripts/gbsyncd.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/scripts/gbsyncd.sh b/files/scripts/gbsyncd.sh index 7790a131f8ed..74aafaead9f1 100755 --- a/files/scripts/gbsyncd.sh +++ b/files/scripts/gbsyncd.sh @@ -26,7 +26,7 @@ function stopplatform1() { /usr/bin/docker exec -i gbsyncd$DEV /usr/share/sonic/platform/plugins/gbsyncd_request_pre_shutdown --${TYPE} debug "${TYPE} shutdown syncd process in container gbsyncd$DEV ..." - /usr/bin/docker exec -i gbsyncd$DEV /usr/bin/syncd_request_shutdown -g 1 --${TYPE} + /usr/bin/docker exec -i gbsyncd$DEV /usr/bin/syncd_request_shutdown -g 1 -x /usr/share/sonic/hwsku/context_config.json --${TYPE} # wait until syncd quits gracefully or force syncd to exit after # waiting for 20 seconds