From d0f5735193f1e9bb01432c80c3e7e77103d24a52 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 1 Nov 2019 12:55:15 -0700 Subject: [PATCH 1/5] [docker-lldp-sv2] Create a file named critical_processes. Signed-off-by: Yong Zhao --- dockers/docker-lldp-sv2/critical_processes | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 dockers/docker-lldp-sv2/critical_processes diff --git a/dockers/docker-lldp-sv2/critical_processes b/dockers/docker-lldp-sv2/critical_processes new file mode 100644 index 000000000000..b845b70bb3f7 --- /dev/null +++ b/dockers/docker-lldp-sv2/critical_processes @@ -0,0 +1,3 @@ +lldpd +lldp-syncd +lldpmgrd From 8bd0914b4f06861281e2305e5796c0bccf102406 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 1 Nov 2019 13:05:43 -0700 Subject: [PATCH 2/5] [docker-lldp-sv2] Make event listener autostart by adding option in supervisored conf file. Signed-off-by: Yong Zhao --- dockers/docker-lldp-sv2/supervisord.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dockers/docker-lldp-sv2/supervisord.conf b/dockers/docker-lldp-sv2/supervisord.conf index 5feb3543f1bc..3f3f5beabc8d 100644 --- a/dockers/docker-lldp-sv2/supervisord.conf +++ b/dockers/docker-lldp-sv2/supervisord.conf @@ -3,6 +3,12 @@ logfile_maxbytes=1MB logfile_backups=2 nodaemon=true +[eventlistener:supervisor-proc-exit-listener] +command=/usr/bin/supervisor-proc-exit-listener +events=PROCESS_STATE_EXITED +autostart=true +autorestart=unexpected + [program:start.sh] command=/usr/bin/start.sh priority=1 From a25f6500fa6f0fe3562c2737944378f5a5a2474e Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 1 Nov 2019 13:44:07 -0700 Subject: [PATCH 3/5] [docker-lldp-sv2] Add paths of supervisord listener script and critical processes file into dockerfile.j2. Signed-off-by: Yong Zhao --- dockers/docker-lldp-sv2/Dockerfile.j2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dockers/docker-lldp-sv2/Dockerfile.j2 b/dockers/docker-lldp-sv2/Dockerfile.j2 index 2a76c2cc6f0b..6a720514ef9b 100644 --- a/dockers/docker-lldp-sv2/Dockerfile.j2 +++ b/dockers/docker-lldp-sv2/Dockerfile.j2 @@ -40,5 +40,7 @@ COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] COPY ["lldpd.conf.j2", "/usr/share/sonic/templates/"] COPY ["lldpd", "/etc/default/"] COPY ["lldpmgrd", "/usr/bin/"] +COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] +COPY ["critical_processes", "/etc/supervisor"] ENTRYPOINT ["/usr/bin/supervisord"] From 39da08a1e11a2d6c9fc3c16e2e821ec7b8674b36 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Fri, 1 Nov 2019 15:04:42 -0700 Subject: [PATCH 4/5] [docker-lldp-sv2] Configure systemd to stop restarting lldp-sv2 if it wants to restart this container more than 3 times in 20 minutes. Signed-off-by: Yong Zhao --- files/build_templates/lldp.service.j2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/files/build_templates/lldp.service.j2 b/files/build_templates/lldp.service.j2 index c317e18efc5c..6da216a92450 100644 --- a/files/build_templates/lldp.service.j2 +++ b/files/build_templates/lldp.service.j2 @@ -3,12 +3,16 @@ Description=LLDP container Requires=updategraph.service After=updategraph.service Before=ntp-config.service +StartLimitIntervalSec=1200 +StartLimitBurst=3 [Service] User={{ sonicadmin_user }} ExecStartPre=/usr/bin/{{docker_container_name}}.sh start ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop +Restart=always +RestartSec=30 [Install] WantedBy=multi-user.target From e86718e580250fded090d51a1d5322fdcdf0cd7e Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Mon, 4 Nov 2019 09:28:09 -0800 Subject: [PATCH 5/5] [docker-lldp-sv2] Add macro $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) into shared Makefile docker-lldp-sv2.mk. Signed-off-by: Yong Zhao --- rules/docker-lldp-sv2.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/rules/docker-lldp-sv2.mk b/rules/docker-lldp-sv2.mk index 104576f78891..91acbe58ad82 100644 --- a/rules/docker-lldp-sv2.mk +++ b/rules/docker-lldp-sv2.mk @@ -30,3 +30,4 @@ $(DOCKER_LLDP_SV2)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_LLDP_SV2)_BASE_IMAGE_FILES += lldpctl:/usr/bin/lldpctl $(DOCKER_LLDP_SV2)_BASE_IMAGE_FILES += lldpcli:/usr/bin/lldpcli +$(DOCKER_LLDP_SV2)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT)