[gbsyncd] Graceful shutdown of syncd process in container gbsyncd (#16812)

Fix #16608. Need to gracefully shutdown syncd/gbsyncd individually.
This commit is contained in:
Junhua Zhai 2023-12-07 13:43:13 +08:00 committed by GitHub
parent 90dc254656
commit 048f2a7c39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -19,7 +19,32 @@ function waitplatform() {
} }
function stopplatform1() { 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 -x /usr/share/sonic/hwsku/context_config.json --${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() { function stopplatform2() {