Skip to content

Commit 3f37b96

Browse files
jipanyanglguohan
authored andcommitted
[swss]: Add support for swss docker warm restart (#1982)
Signed-off-by: Jipan Yang <[email protected]>
1 parent 1157dbb commit 3f37b96

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

files/scripts/swss.sh

+30-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,29 @@
22

33
start() {
44
# Wait for redis server start before database clean
5-
until [[ $(/usr/bin/docker exec database redis-cli ping | grep -c PONG) -gt 0 ]];
5+
until [[ $(/usr/bin/docker exec database redis-cli ping | grep -c PONG) -gt 0 ]];
66
do sleep 1;
77
done
88

9+
# Wait for configDB initialization
10+
until [[ $(/usr/bin/docker exec database redis-cli -n 4 GET "CONFIG_DB_INITIALIZED") ]];
11+
do sleep 1;
12+
done
13+
14+
SYSTEM_WARM_START=`/usr/bin/docker exec database redis-cli -n 4 HGET "WARM_RESTART|system" enable`
15+
SWSS_WARM_START=`/usr/bin/docker exec database redis-cli -n 4 HGET "WARM_RESTART|swss" enable`
16+
# if warm start enabled, just do swss docker start.
17+
# Don't flush DB or try to start other modules.
18+
if [[ "$SYSTEM_WARM_START" == "true" ]] || [[ "$SWSS_WARM_START" == "true" ]]; then
19+
RESTART_COUNT=`redis-cli -n 6 hget "WARM_RESTART_TABLE|orchagent" restart_count`
20+
# We have to make sure db data has not been flushed.
21+
if [[ -n "$RESTART_COUNT" ]]; then
22+
/usr/bin/swss.sh start
23+
/usr/bin/swss.sh attach
24+
return 0
25+
fi
26+
fi
27+
928
# Flush DB
1029
/usr/bin/docker exec database redis-cli -n 0 FLUSHDB
1130
/usr/bin/docker exec database redis-cli -n 1 FLUSHDB
@@ -25,14 +44,22 @@ start() {
2544
/etc/init.d/xpnet.sh start
2645
fi
2746

28-
# start swss and syncd docker
29-
/usr/bin/swss.sh start
47+
# start swss and syncd docker
48+
/usr/bin/swss.sh start
3049
/usr/bin/syncd.sh start
3150
/usr/bin/swss.sh attach
3251
}
3352

3453
stop() {
3554
/usr/bin/swss.sh stop
55+
56+
SYSTEM_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|system" enable`
57+
SWSS_WARM_START=`redis-cli -n 4 hget "WARM_RESTART|swss" enable`
58+
# if warm start enabled, just stop swss docker, then return
59+
if [[ "$SYSTEM_WARM_START" == "true" ]] || [[ "$SWSS_WARM_START" == "true" ]]; then
60+
return 0
61+
fi
62+
3663
/usr/bin/syncd.sh stop
3764

3865
# platform specific tasks

0 commit comments

Comments
 (0)