bug report: `supervisord` ignores retry limit when `startsecs=0`
Maintainer antworten meist innerhalb von 2 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 68/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- docker, shell
- Bereich
- devops, infrastructure
Rechercherichtung
Beginnen Sie mit dem Lesen der vier Stellen, an denen startsecs=0 gesetzt wird, insbesondere supervisor/conf.d/dms-services.conf und supervisor/conf.d/saslauth.conf, und untersuchen Sie anschließend den Startablauf in scripts/startup/daemons-stack.sh und scripts/startup/setup.d/fetchmail.sh. Prüfen Sie zeitkritische Tests, während Sie die Verwendung von supervisorctl nachverfolgen. Die Arbeit ist abgeschlossen, wenn fehlgeschlagene Dienste das Wiederholungslimit einhalten und der Start supervisorctl start effizient aufrufen kann, ohne eine unzumutbare Verzögerung des Containers.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
startsecs=0(default is1second) has been used in DMS sincesupervisordwas added into the project back in Aug 2017. It determines how long a service needs to be running before it's moved from theSTARTINGtoRUNNINGstate.startretries=3(default) is the number of retry attempts before the service is marked with the statusFATALand is no longer restarted. This only applies during theSTARTINGstatus prior to being assignedRUNNING(unless the service fails in this state, where supervisord will restart it, placing it back intoSTARTINGstatus).
Due to the above mismatch, a service immediately enters RUNNING status, and if it then crashes with an uptime of 0 seconds the startsecs value will immediately switch from STARTING to RUNNING, there is no opportunity to increment the restart counter so it is always reset once the service is marked as RUNNING again.
For a reliable healthcheck script (as is being pursued here), we should correct this.
Known examples of this behaviour observed in DMS:
- https://github.com/docker-mailserver/docker-mailserver/issues/4579 (rspamd)
- https://github.com/docker-mailserver/docker-mailserver/pull/4586 (fetchmail)
A side-effect of changing to startsecs = 1 is supervisorctl start (and potentially other sub-commands) are blocking with that delay. Any usage within DMS scripts would be affected by such, most notably during container startup where we sequentially invoke the start command per service individually. In the startup case we should probably collect the services to start and provide them all to a single supervisorctl start ... command, that should keep the impact low. Some container deployments may have a healthcheck policy that kills/restarts the container under an unhealthy state, so let's ensure the downtime is low 😅
Locations for startsecs=0 => startsecs=1 (or deletion):
supervisor/conf.d/dms-services.confsupervisor/conf.d/saslauth.confscripts/startup/setup.d/fetchmail.shexamples/use-cases/ios-mail-push-support.md
Refactor invoking supervisorctl start to single use in scripts/startup/daemons-stack.sh:
- This method should add the service into an array
- Then in this method invoke
supervisorctl startand carry over relevant logic from prior linked method.
Either that or a more extensive refactor. This change may also impact the test suite if any test cases are aggressive with timing expectations.
- Vorherrschende Sprache
- Shell
- Sterne
- 19.7k
- Forks
- 2.1k
- Ø Merge
- 3 T. 29 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus docker-mailserver/docker-mailserver
-
bug report: Messages deleted from Junk get learnt as hamEvtl. vergeben @georglauterbach hat das vor 8 Tagen übernommen. Offenkind/bug/report meta/needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
docker-mailserver/docker-mailserver#4831 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug report: Error: sieve: Execution of script 'learn_spam/learn-spam' failedEvtl. vergeben @georglauterbach hat das heute übernommen. Offenarea/configuration (file) area/scripts kind/bug/report meta/needs triage service/dovecot service/security/rspamd
docker-mailserver/docker-mailserver#4844 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 2 Tagen
-
area/configuration (file) area/scripts kind/new feature priority/medium service/dovecot
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
docker-mailserver/docker-mailserver#4841 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug report: headers within signed section get modified resulting in invalid signatureEvtl. vergeben @Vosjedev hat das vor 11 Tagen übernommen. Offenarea/configuration (file) kind/bug/report meta/needs triage priority/high service/postfix
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 56/100
docker-mailserver/docker-mailserver#4830 · 1 Kommentar · 2 zugewiesene Personen ·
Maintainer antworten meist innerhalb von 2 Tagen
-
feature request: sign with relaxed/relaxed body canonicalization by defaultEvtl. wieder frei @casperklein hat das vor 72 Tagen übernommen, und es ist kein Pull Request offen. Offenarea/configuration (file) service/security/dkim-dmarc-spf stale-bot/ignore
docker-mailserver/docker-mailserver#4751 · 3 Kommentare · 2 zugewiesene Personen ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in docker-mailserver/docker-mailserver
Ähnliche Issues
-
Misleading 'Update → Config → Hyprland' menu item silently resets user configs without confirmationOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
lobaro/restic-backup-docker#114 ·
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 90/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 91/100
Maintainer antworten meist innerhalb von 1 Tag