From 826015e52f820041f9a3847c9e5c0a0870d7f930 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 26 Mar 2025 11:11:21 +0000 Subject: [PATCH] fix(dogfood/coder): add shutdown script and graceful agent shutdown By stopping Docker, we can hopefully avoid errors like this: ``` 2025-03-26 12:14:53.280+02:00 Error: Error deleting container aa313fca0f72e59d4571afec898392e0ae34567d56c0ad15554c87394d2ca1e1: Error response from daemon: container aa313fca0f72e59d4571afec898392e0ae34567d56c0ad15554c87394d2ca1e1: driver "overlay2" failed to remove root filesystem: unlinkat /var/data/docker/overlay2/2e8e509237c79ebec972cccae9867f3bd6f71d49d4ed68db1b5ba229c3a2ff62/diff/var/lib/docker/overlay2/9c7c4ab0187ece1ca270d146090a8e852808996279d103cb394b2821c472af4c/diff/usr/lib/python3/dist-packages/ansible_collections: directory not empty ``` --- dogfood/coder/main.tf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 6f1eaff1aafeb..30e728ce76c09 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -357,6 +357,14 @@ resource "coder_agent" "dev" { cd "${local.repo_dir}" && make clean cd "${local.repo_dir}/site" && pnpm install EOT + + shutdown_script = <<-EOT + #!/usr/bin/env bash + set -eux -o pipefail + + # Stop the Docker service to prevent errors during workspace destroy. + sudo service docker stop + EOT } # Add a cost so we get some quota usage in dev.coder.com @@ -418,6 +426,10 @@ resource "docker_container" "workspace" { # CPU limits are unnecessary since Docker will load balance automatically memory = data.coder_workspace_owner.me.name == "code-asher" ? 65536 : 32768 runtime = "sysbox-runc" + # Ensure the workspace is given time to execute shutdown scripts. + destroy_grace_seconds = 60 + stop_timeout = 60 + stop_signal = "SIGINT" env = [ "CODER_AGENT_TOKEN=${coder_agent.dev.token}", "USE_CAP_NET_ADMIN=true",