2
2
3
3
start () {
4
4
# 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 ]];
6
6
do sleep 1;
7
7
done
8
8
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
+
9
28
# Flush DB
10
29
/usr/bin/docker exec database redis-cli -n 0 FLUSHDB
11
30
/usr/bin/docker exec database redis-cli -n 1 FLUSHDB
@@ -25,14 +44,22 @@ start() {
25
44
/etc/init.d/xpnet.sh start
26
45
fi
27
46
28
- # start swss and syncd docker
29
- /usr/bin/swss.sh start
47
+ # start swss and syncd docker
48
+ /usr/bin/swss.sh start
30
49
/usr/bin/syncd.sh start
31
50
/usr/bin/swss.sh attach
32
51
}
33
52
34
53
stop () {
35
54
/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
+
36
63
/usr/bin/syncd.sh stop
37
64
38
65
# platform specific tasks
0 commit comments