README and SPEC say what docker stop does to requests in progress when the app exits at once (closes #139)
check / check (push) Waiting to run

runit stops smallwebwaf and the app at the same time, so the five seconds
smallwebwaf gives requests in progress help only while the app still
answers them. Both documents now say so, say what the client gets when the
app exits at once on SIGTERM, and say what an app does to let its requests
in progress finish.

Model: opus-5-5
This commit was merged in pull request #146.
This commit is contained in:
2026-10-20 15:28:31 +02:00
parent d9f7344ae6
commit b0d54a2c51
2 changed files with 18 additions and 5 deletions
+10 -3
View File
@@ -1324,9 +1324,16 @@ The two processes:
- A `smallwebwaf` that stops at start, for example on invalid configuration, is
started again every second and stops again, logging its message each time,
until the cause is fixed. The health check fails meanwhile.
- `docker stop` sends SIGTERM to `runsvinit`, which has runit stop both
services, each with SIGTERM, and exits once they have stopped. `smallwebwaf`
writes its state files as it stops (see "Persistent state").
- `docker stop` sends SIGTERM to `runsvinit`, which has runit stop both services
at once, each with SIGTERM, and exits once they have stopped. `smallwebwaf`
stops taking requests, gives those in progress five seconds to finish, and
writes its state files as it stops (see "Persistent state"). The requests in
progress can finish only while the app still answers. An app that exits at
once on SIGTERM ends them: the client gets `502`, or a response cut short if
the app had already begun to answer. An app that should let them finish keeps
taking and answering requests, not only the ones it already has, for the whole
five seconds after SIGTERM, since `smallwebwaf` can still pass it requests it
took before then.
- The container's root filesystem stays writable: runit writes each service's
status into its directory under `/etc/service`.