From 9d1d607fcd221d42633a59601c4f388a77f8ad74 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Fri, 27 Jun 2025 10:53:19 +0000 Subject: [PATCH] fix(agent/agentcontainers): ensure proper channel closure for updateTrigger --- agent/agentcontainers/api.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/agent/agentcontainers/api.go b/agent/agentcontainers/api.go index 26ebafd660fb1..bdf7b79bc1775 100644 --- a/agent/agentcontainers/api.go +++ b/agent/agentcontainers/api.go @@ -422,12 +422,17 @@ func (api *API) updaterLoop() { // advancing the clock. ticker := api.clock.TickerFunc(api.ctx, api.updateInterval, func() error { done := make(chan error, 1) - defer close(done) - + var sent bool + defer func() { + if !sent { + close(done) + } + }() select { case <-api.ctx.Done(): return api.ctx.Err() case api.updateTrigger <- done: + sent = true err := <-done if err != nil { if errors.Is(err, context.Canceled) { @@ -456,6 +461,7 @@ func (api *API) updaterLoop() { // Note that although we pass api.ctx here, updateContainers // has an internal timeout to prevent long blocking calls. done <- api.updateContainers(api.ctx) + close(done) } } } @@ -800,12 +806,19 @@ func (api *API) RefreshContainers(ctx context.Context) (err error) { }() done := make(chan error, 1) + var sent bool + defer func() { + if !sent { + close(done) + } + }() select { case <-api.ctx.Done(): return xerrors.Errorf("API closed: %w", api.ctx.Err()) case <-ctx.Done(): return ctx.Err() case api.updateTrigger <- done: + sent = true select { case <-api.ctx.Done(): return xerrors.Errorf("API closed: %w", api.ctx.Err()) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy