53be9de743
The issue is related to #16812. Process syncd does not run in the container gbsyncd on kvm sonic with default hwsku. Microsoft ADO : 26151608 How I did it If syncd has not run in container gbsyncd, it is not needed to trigger graceful shudown of syncd. How to verify it None of syncd_request_shutdown coredump in config reload on KVM sonic
84 lines
2.6 KiB
Bash
Executable File
84 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
. /usr/local/bin/syncd_common.sh
|
|
|
|
function startplatform() {
|
|
|
|
declare -A DbCliArray=([0]=$SONIC_GLOBAL_DB_CLI [1]=$SONIC_DB_CLI)
|
|
for DB_CLI in "${DbCliArray[@]}"; do
|
|
# Add gbsyncd to FEATURE table, if not in. It did have same config as syncd.
|
|
if [ -z $($DB_CLI CONFIG_DB HGET 'FEATURE|gbsyncd' state) ]; then
|
|
local CMD="local r=redis.call('DUMP', KEYS[1]); redis.call('RESTORE', KEYS[2], 0, r)"
|
|
$DB_CLI CONFIG_DB EVAL "$CMD" 2 'FEATURE|syncd' 'FEATURE|gbsyncd'
|
|
$DB_CLI CONFIG_DB EVAL "$CMD" 2 'SYSLOG_CONFIG_FEATURE|syncd' 'SYSLOG_CONFIG_FEATURE|gbsyncd'
|
|
fi
|
|
done
|
|
}
|
|
|
|
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() {
|
|
:
|
|
}
|
|
|
|
OP=$1
|
|
DEV=$2
|
|
|
|
SERVICE="$gbsyncd_platform"
|
|
PEER="swss"
|
|
DEBUGLOG="/tmp/swss-$SERVICE-debug$DEV.log"
|
|
LOCKFILE="/tmp/swss-$SERVICE-lock$DEV"
|
|
NAMESPACE_PREFIX="asic"
|
|
SONIC_GLOBAL_DB_CLI="sonic-db-cli"
|
|
SONIC_DB_CLI="sonic-db-cli"
|
|
if [ "$DEV" ]; then
|
|
NET_NS="$NAMESPACE_PREFIX$DEV" #name of the network namespace
|
|
SONIC_DB_CLI="sonic-db-cli -n $NET_NS"
|
|
fi
|
|
|
|
case "$1" in
|
|
start|wait|stop)
|
|
$1
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|wait|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|