At 0 bytes free, a cached-image deploy fails with a raw containerd mount error and Corrosion goes down, with no 'disk is full' sentence#3911
Found in the 0.3.17 soak, frozen sha 99a623f800b349f71a37af96cb91dce2658b7a63 (ployz: hit local 5d8fd3c9, ployzd: hit local 9cf0b05b, sdk: hit local 348922e9), local Cloud, four Boat Servers (Ubuntu 24.04).
What happened
On MY-SERVER, root was filled to 0 bytes free, root's reserve included (fallocate to the free size, then dd until No space left on device).
- An uncached image deploy fails as documented:
full: Server MY-SERVER's disk is full: 0 MB free under /var/lib/containerd.Good. - A deploy of a cached image (an env change to a running Service) fails differently:
web: create Container failed. cause: ... mount callback failed on /tmp/containerd-mount…: mkdir …/dev: no space left on device. It doesn't name the Server or say its disk is full, unlike the pull path. - During that deploy, Corrosion on MY-SERVER exits (code 1, then three restarts exiting 101). The deploy adds
! Couldn't check ingress: Corrosion HTTP request failed: … Connection refused (os error 111) (on Server MY-SERVER), andployz psfails witherror: Corrosion HTTP request failed / cause: Connection refused. Nothing points at the full disk. - ployzd restarts Corrosion (
WARN Corrosion wasn't running; ployzd started it again). It stays up once the failed deploy's cleanup frees about 58 MB. After freeing the disk,ployz deploysucceeds on all four Servers and every row agrees. No data was lost that I could see.
ployz server ls does warn Server MY-SERVER's disk is nearly full: 0 MB free for Docker, which helps.
Expected
docs/user/troubleshooting/deployments.md "My server's disk is full" covers only the pull failure. A create failure from ENOSPC, and Corrosion going down on a full disk, should say Server MY-SERVER's disk is full too, rather than a raw containerd mount error and a Corrosion connection refusal.
Reproduces on v0.3.16?
Not run.
F: 2 S: 4 F×S: 8
Blocks the 0.3.17 cut: no. It needs a disk with 0 bytes free, root's reserve included, and it recovers once space is freed.