From 3d5c180e08d29f51120b41de1571026387f7197a Mon Sep 17 00:00:00 2001 From: "benjamin.baker" Date: Fri, 4 Sep 2026 19:14:23 -0400 Subject: [PATCH] Restore the indentation on the gunicorn worker block The threaded-worker arguments were pasted at column 0 instead of under the api service's command list, so the file stopped parsing as YAML: compose failed with 'did not find expected key' at the services mapping and no build or up could run at all. Indentation only - the arguments themselves are unchanged, and the stack still runs gthread with 4 workers and 8 threads on a 30 second timeout. --- docker-compose.yml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 03780a73..8af86016 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -79,25 +79,25 @@ services: - gunicorn - --bind - 0.0.0.0:5001 -# Threaded workers, not the blocking sync default. An agent that fails -# the TLS handshake retries in a loop, and with 4 sync workers a handful -# of those pinned every worker: real UI requests queued 20+ seconds while -# the CPU sat idle. A stuck connection now holds one THREAD, and 32 -# (4 x 8) have to be exhausted before a person waits. -# -# Found in production at the other site (their commit db75ca7). Their -# server, our agent - so the same client behaviour will reach any site -# running the endpoint agent, and the fix belongs in the product rather -# than on one branch. -- --worker-class -- gthread -- --workers -- "4" -- --threads -- "8" -# 30, not 60: a hung connection frees its thread in half the time, which -# is what decides whether a retry storm is absorbed or queues. -- --timeout + # Threaded workers, not the blocking sync default. An agent that fails + # the TLS handshake retries in a loop, and with 4 sync workers a handful + # of those pinned every worker: real UI requests queued 20+ seconds while + # the CPU sat idle. A stuck connection now holds one THREAD, and 32 + # (4 x 8) have to be exhausted before a person waits. + # + # Found in production at the other site (their commit db75ca7). Their + # server, our agent - so the same client behaviour will reach any site + # running the endpoint agent, and the fix belongs in the product rather + # than on one branch. + - --worker-class + - gthread + - --workers + - "4" + - --threads + - "8" + # 30, not 60: a hung connection frees its thread in half the time, which + # is what decides whether a retry storm is absorbed or queues. + - --timeout - "30" - --access-logfile - "-"