Skip to content

Commit

Permalink
[gbsyncd] Graceful shutdown of syncd process in container gbsyncd (#1…
Browse files Browse the repository at this point in the history
…6812) (#17563)

Fix #16608. Need to gracefully shutdown syncd/gbsyncd individually.
  • Loading branch information
jimmyzhai committed Dec 20, 2023
1 parent 9dbb016 commit 3d7459c
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion files/scripts/gbsyncd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,37 @@ function waitplatform() {
}

function stopplatform1() {
:
if ! docker top gbsyncd$DEV | grep -q /usr/bin/syncd; then
debug "syncd process in container gbsyncd$DEV is not running"
return
fi

# 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() {
Expand Down

0 comments on commit 3d7459c

Please sign in to comment.