From fab8d6252130ee4383375171c1ef582953489a75 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 30 Apr 2026 16:19:47 +0300 Subject: [PATCH] =?UTF-8?q?tower=200.61.17=20/=20tower-ui=200.61.17=20?= =?UTF-8?q?=E2=80=94=20async=20addon=20save=20(kill=20Saving=20freeze)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit handleUpdateAddons was fully synchronous including BuildKit Jobs per addon image. cetmix_tower auto-pulls 8 deps × ~30-90s each on a fresh cluster = 5-15 min. Reverse proxy timeout (60-120s) cuts the request mid-build, browser shows 'Saving' forever, drawer eventually closes on the timeout error, AND the cancelled context kills the goroutine mid-flight so values.yaml never gets committed. Now: handler validates inline (immediate feedback on bad input), spawns an addon-stage op, returns 202 + opId in <1s. The goroutine runs phases (resolve → build → commit → refresh) with a fresh context that survives client disconnect. Operator watches it in the bell + Activity tab, can keep working in another tab. Same pattern Deploy/Migrate/Apply already use. --- values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/values.yaml b/values.yaml index b7ff192..5b42b33 100644 --- a/values.yaml +++ b/values.yaml @@ -9,7 +9,7 @@ backend: # so every cluster that runs Tower needs the same imagePullSecret # provisioned out-of-band (until cluster-platform-v3 owns it). repository: registry.odoosky.cloud/odoosky/docker-mirror/tower - tag: "0.61.16" + tag: "0.61.17" pullPolicy: IfNotPresent imagePullSecrets: - name: docker-mirror-pull @@ -29,7 +29,7 @@ frontend: enabled: true image: repository: registry.odoosky.cloud/odoosky/docker-mirror/tower-ui - tag: "0.61.16" + tag: "0.61.17" pullPolicy: IfNotPresent imagePullSecrets: - name: docker-mirror-pull