Arret
[server]
shutdown_grace_period_secs = 30 # attente du travail en cours, toutes portes
docker stop -t 90 craft-file-gate # Docker
# Kubernetes : terminationGracePeriodSeconds: 90
Les etapes
SIGTERM ou SIGINT (Ctrl-C) declenchent l’arret, le serveur fut-il PID 1.
| Etape | Ce qui se passe | Borne |
|---|---|---|
| 1 | la porte SFTP n’accepte plus ; /readyz repond 503 ; plus aucune verification de mot de passe admise | - |
| 2 | les listes de bans ([sftp.ban], [api.ban], [admin.ban]) sont ecrites dans leur persist_file | 5 s par liste |
| 3 | server shutting down envoye a toutes les sessions SFTP ; la porte admin/API n’accepte plus et ferme ses flux | - |
| 4 | les sessions sans transfert en cours sont coupees | - |
| 5 | attente des transferts en cours, s’il y en a ; finit avec le dernier | shutdown_grace_period_secs |
| 6 | toute session encore la est coupee | - |
| 7 | attente de la fin des sessions coupees (spans, dernieres lignes d’audit) | reste du delai |
| 8 | attente des requetes REST et admin en cours | reste du delai |
| 9 | uploads multipart S3 encore ouverts annules | 5 s |
| 10 | nettoyages de quota et retraits des verrous d’upload | 5 s |
| 11 | dernier envoi OTLP (metriques, spans) | 5 s |
| 12 | graceful shutdown complete, sortie 0 | - |
Les etapes 5, 7 et 8 partagent un seul delai, compte depuis l’annonce. Sans transfert en cours, l’arret ne l’attend pas.
Regler l’orchestrateur
Le pire cas d’un arret :
| Composante | Defaut |
|---|---|
shutdown_grace_period_secs | 30 s |
| ecriture des bans | 5 s par liste ([sftp.ban], [api.ban], [admin.ban]) |
| travaux des backends | 5 s |
| nettoyages et verrous | 5 s |
| envoi OTLP | 5 s |
| total | 50 s avec une liste de bans, 60 s avec les trois |
Le delai d’arret de l’orchestrateur doit le depasser : docker stop -t 90,
terminationGracePeriodSeconds: 90, que le chart pose (delai de grace plus 60 s). Un SIGKILL avant la fin coupe les
transferts sans ligne d’audit, laisse les multipart S3 ouverts et perd les
spans non exportes.
Ce que vous verrez
Chaque etape ecrit sa ligne INFO : shutdown signal received,
ban files written out before the shutdown sequence, idle sessions disconnected (idle_kicked), waiting for active transfers to complete
(seulement s’il y en a), remaining sessions disconnected (force_kicked,
0 compris), graceful shutdown complete. Les sessions coupees finissent
en session_end reason=shutdown_idle (etape 4) ou shutdown (etape 6).