According to the documentation at fly.io/docs/configuration/#kill_signal-option SIGUSR2
is supported, the fly CLI also states “✓ Configuration is valid”, but when I then deploy the app with the following keys in the TOML:
kill_signal = "SIGUSR2"
kill_timeout = "5m"
it fails like this:
==> Verifying app config
Validating ~/Workspace/panascais/projects/<project-name>/fly.toml
✓ Configuration is valid
--> Verified app config
==> Building image
Remote builder fly-builder-winter-feather-2005 ready
Remote builder fly-builder-winter-feather-2005 ready
==> Building image with Docker
--> docker host: 24.0.7 linux x86_64
[+] Building 0.8s (12/12) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 241B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 62B 0.0s
=> [internal] load metadata for docker.io/library/debian:bookworm 0.7s
=> [internal] load metadata for docker.io/library/golang:1.22-bookworm 0.7s
=> [builder 1/4] FROM docker.io/library/golang:1.22-bookworm@sha256:<SHA> 0.0s
=> [stage-1 1/2] FROM docker.io/library/debian:bookworm@sha256:<SHA> 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 113B 0.0s
=> CACHED [builder 2/4] WORKDIR /<project-name> 0.0s
=> CACHED [builder 3/4] COPY . . 0.0s
=> CACHED [builder 4/4] RUN CGO_ENABLED=0 GOOS=linux go build -v -o executable 0.0s
=> CACHED [stage-1 2/2] COPY --from=builder /<project-name>/executable /<project-name> 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:<SHA> 0.0s
=> => naming to registry.fly.io/<project-name>:deployment-<DEPLOYMENT_ID> 0.0s
--> Building image done
==> Pushing image to fly
The push refers to repository [registry.fly.io/<project-name>]
ef6234e47ff4: Layer already exists
0238a1790324: Layer already exists
deployment-<DEPLOYMENT_ID>: digest: sha256:<SHA> size: 740
--> Pushing image done
image: registry.fly.io/<project-name>:deployment-<DEPLOYMENT_ID>
image size: 136 MB
Watch your deployment at https://fly.io/apps/<project-name>/monitoring
-------
Updating existing machines in '<project-name>' with rolling strategy
-------
✖ [1/9] Machine <VM_ID> [<project-name>] update failed: failed to update VM <VM_ID>: invalid stop_config.signal, must be one of [SIGTERM SIGFPE SIGPIPE SIGUSR1 SIGILL SIGHUP SIGKILL SIGQUIT SIGSEGV SIGAL…
[2/9] Waiting for job
[3/9] Waiting for job
[4/9] Waiting for job
[5/9] Waiting for job
[6/9] Waiting for job
[7/9] Waiting for job
[8/9] Waiting for job
[9/9] Waiting for job
-------
Checking DNS configuration for <project-name>.fly.dev
Error: failed to update VM <VM_ID>: invalid stop_config.signal, must be one of [SIGTERM SIGFPE SIGPIPE SIGUSR1 SIGILL SIGHUP SIGKILL SIGQUIT SIGSEGV SIGALRM SIGINT SIGTRAP SIGABRT] (Request ID: <REQUEST_ID>)
It’s probably just missing in the backend from the VM manager, would be really useful if this could be fixed as SIGUSR2
is crucial for our use case.