sonic-net / sonic-buildimage

Scripts which perform an installable binary image build for SONiC
Other
735 stars 1.41k forks source link

watchfrr is not running #3196

Open nikos-github opened 5 years ago

nikos-github commented 5 years ago

This breaks existing functionality.

xinliu-seattle commented 5 years ago

@nikos-github can you please add the repro steps ? thanks.

nikos-github commented 5 years ago

@xinliu-seattle No repro steps needed. watchfrr must always run in frr and currently it's not running. That has been a day 0 requirement.

Before Guohan's changes: root@sonic:/home/admin# docker exec -it bgp ps axf PID TTY STAT TIME COMMAND 528 pts/3 Rs+ 0:00 ps axf 497 pts/2 Ss+ 0:00 bash 490 pts/1 Ss+ 0:00 bash 1 pts/0 Ss 0:00 /bin/sh -c /usr/bin/config.sh && /usr/bin/s 33 ? Ssl 0:41 /usr/sbin/rsyslogd 65 ? Ss 20:35 /usr/lib/frr/watchfrr -d -r /usr/lib/frr/watchfrr.sh 80 ? Ssl 6:31 /usr/lib/frr/zebra -d -A 127.0.0.1 -s 90000000 -M fpm 83 ? Ssl 12:22 /usr/lib/frr/bgpd -d -A 127.0.0.1 90 ? Ss 3:51 /usr/lib/frr/staticd -d -A 127.0.0.1 112 pts/0 Sl 0:00 fpmsyncd 113 pts/0 S+ 0:00 /bin/bash

After Guohan's changes: root@sonic:/home/admin# docker exec -it bgp ps axf PID TTY STAT TIME COMMAND 235 pts/1 Rs+ 0:00 ps axf 1 pts/0 Ss+ 2:00 /usr/bin/python /usr/bin/supervisord 59 pts/0 Sl 0:01 /usr/sbin/rsyslogd -n 64 pts/0 S 0:00 python /usr/bin/bgpcfgd 72 pts/0 Sl 0:03 /usr/lib/frr/zebra -A 127.0.0.1 -s 90000000 -M fpm -M 75 pts/0 S 0:00 /usr/lib/frr/staticd -A 127.0.0.1 78 pts/0 Sl 0:00 /usr/lib/frr/bgpd -A 127.0.0.1 -M snmp 84 pts/0 Sl 0:00 fpmsyncd (edited)

lguohan commented 5 years ago

why do we need watchfrr, we are using supervisord to manage frr. according to manual, watchfrr is for systemd integration.

nikos-github commented 5 years ago

@lguohan @xinliu-seattle @zhenggen-xu @MichelMoriniaux @mslocrian When frr was introduced to sonic, supervisord wasn't there. Supervisord came much later and recently you transitioned frr to supervisord without review from the community or the key frr stakeholders and that is breaking sonic and frr functionality for many. All the functionality of watchfrr is being used and required by those running frr. In addition frr-reload has a requirement on watchfrr too for incremental non-disruptive config push.

lguohan commented 5 years ago

why does frr-reload require watchfrr?

nikos-github commented 5 years ago

@lguohan @xinliu-seattle @zhenggen-xu @MichelMoriniaux @mslocrian frr-reload is part of frr-pythontools pkg which requires watchfrr in order to work properly. In addition, watchfrr provides integrated config functionality among other things through commands that are not available if watchfrr is not running. watchfrr has been running since day 1 when frr was introduced into sonic 2+ yrs back and it's a requirement.