Skip to content

Commit a877603

Browse files
marian-pritsaklguohan
authored andcommitted
Merge swss and syncd into single service (#334)
Current implementation of swss and syncd causes a lot of problems in terms of dependencies and synchronization. Instead of handling them in separate services, we now start and stop them both as a single entity. Signed-off-by: marian-pritsak <[email protected]>
1 parent 73fb59c commit a877603

File tree

4 files changed

+34
-37
lines changed

4 files changed

+34
-37
lines changed

files/build_templates/sonic_debian_extension.j2

+4-2
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,10 @@ sudo chroot $FILESYSTEM_ROOT service docker stop
184184
sudo cp {{script}} $FILESYSTEM_ROOT/usr/bin/
185185
{% endfor %}
186186
{% for service in installer_services.split(' ') -%}
187-
sudo cp {{service}} $FILESYSTEM_ROOT/etc/systemd/system/
188-
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable {{service}}
187+
if [ -f {{service}} ]; then
188+
sudo cp {{service}} $FILESYSTEM_ROOT/etc/systemd/system/
189+
sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable {{service}}
190+
fi
189191
{% endfor %}
190192
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -km /sys || true
191193
sudo LANG=C chroot $FILESYSTEM_ROOT umount -lf /sys

files/build_templates/swss.service.j2

+25-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,40 @@
11
[Unit]
2-
Description=switch state service container
2+
Description=switch state service
33
Requires=database.service
44
After=database.service
55

66
[Service]
7-
User={{ sonicadmin_user }}
87
# Wait for redis server start before database clean
98
ExecStartPre=/bin/bash -c "while true; do if [ \"$(/usr/bin/docker exec database redis-cli ping)\" == \"PONG\" ]; then break; fi; sleep 1; done"
109
ExecStartPre=/usr/bin/docker exec database redis-cli -n 0 FLUSHDB
1110
ExecStartPre=/usr/bin/docker exec database redis-cli -n 1 FLUSHDB
1211
ExecStartPre=/usr/bin/docker exec database redis-cli -n 2 FLUSHDB
13-
ExecStart=/usr/bin/{{docker_container_name}}.sh start
12+
13+
{% if sonic_hwsku == 'ACS-MSN2700' %}
14+
ExecStartPre=/etc/init.d/sxdkernel start
15+
ExecStartPre=/usr/bin/mst start
16+
ExecStartPre=/etc/mlnx/msn2700 start
17+
{% elif sonic_hwsku == 'AS7512' %}
18+
ExecStartPre=-/etc/init.d/xpnet.sh stop
19+
ExecStartPre=/etc/init.d/xpnet.sh start
20+
{% endif %}
21+
22+
# systemd allows only one parent process within service,
23+
# so we spawn both dockers from single bash parent
24+
ExecStart=/bin/bash -c "/usr/bin/{{docker_container_name}}.sh start & /usr/bin/syncd.sh start & wait -n 0"
25+
1426
ExecStop=/usr/bin/{{docker_container_name}}.sh stop
1527
ExecStopPost=/usr/bin/syncd.sh stop
1628

29+
{% if sonic_hwsku == 'ACS-MSN2700' %}
30+
ExecStopPost=/etc/mlnx/msn2700 stop
31+
ExecStopPost=/etc/init.d/sxdkernel stop
32+
ExecStopPost=/usr/bin/mst stop
33+
{% elif sonic_hwsku == 'AS7512' %}
34+
ExecStopPost=/etc/init.d/xpnet.sh stop
35+
ExecStopPost=/etc/init.d/xpnet.sh start
36+
{% endif %}
37+
38+
1739
[Install]
1840
WantedBy=multi-user.target

files/build_templates/syncd.service.j2

-29
This file was deleted.

slave.mk

+5-3
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,9 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : .platform
322322
export docker_container_name="$($(docker)_CONTAINER_NAME)"
323323
export docker_image_run_opt="$($(docker)_RUN_OPT)"
324324
j2 files/build_templates/docker_image_ctl.j2 > $($(docker)_CONTAINER_NAME).sh
325-
j2 files/build_templates/$($(docker)_CONTAINER_NAME).service.j2 > $($(docker)_CONTAINER_NAME).service
325+
if [ -f files/build_templates/$($(docker)_CONTAINER_NAME).service.j2 ]; then
326+
j2 files/build_templates/$($(docker)_CONTAINER_NAME).service.j2 > $($(docker)_CONTAINER_NAME).service
327+
fi
326328
chmod +x $($(docker)_CONTAINER_NAME).sh
327329
)
328330

@@ -342,8 +344,8 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : .platform
342344
TARGET_MACHINE=$($*_MACHINE) IMAGE_TYPE=$($*_IMAGE_TYPE) DEBUG_BUILD=$(DEBUG_BUILD) ./build_image.sh $(LOG)
343345

344346
$(foreach docker, $($*_DOCKERS), \
345-
rm $($(docker)_CONTAINER_NAME).sh
346-
rm $($(docker)_CONTAINER_NAME).service
347+
rm -f $($(docker)_CONTAINER_NAME).sh
348+
rm -f $($(docker)_CONTAINER_NAME).service
347349
)
348350

349351
$(if $($*_DOCKERS),

0 commit comments

Comments
 (0)