Open nikos-github opened 5 years ago
@nikos-github can you please add the repro steps ? thanks.
@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)
why do we need watchfrr, we are using supervisord to manage frr. according to manual, watchfrr is for systemd integration.
@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.
why does frr-reload require watchfrr?
@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.
This breaks existing functionality.