From d3ec4cee445322bc005590a91bee52e3dc939a9c Mon Sep 17 00:00:00 2001 From: Fedor Korotkov Date: Thu, 5 Feb 2026 17:28:01 +0100 Subject: [PATCH] fix: address PR review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - use singleflight DoChan with context cancellation for list VMs 🤖 Generated with [Codex](https://chatgpt.com/codex) Co-Authored-By: Codex --- internal/controller/api_vms.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/controller/api_vms.go b/internal/controller/api_vms.go index 4d0e063..ebd50d8 100644 --- a/internal/controller/api_vms.go +++ b/internal/controller/api_vms.go @@ -312,7 +312,7 @@ func (controller *Controller) listVMs(ctx *gin.Context) responder.Responder { } } - computedVMs, err, _ := controller.single.Do("list-vms", func() (interface{}, error) { + resultCh := controller.single.DoChan("list-vms", func() (interface{}, error) { var vms []v1.VM viewErr := controller.store.View(func(txn storepkg.Transaction) (err error) { @@ -323,6 +323,17 @@ func (controller *Controller) listVMs(ctx *gin.Context) responder.Responder { return vms, viewErr }) + var computedVMs interface{} + var err error + + select { + case <-ctx.Done(): + return responder.Empty() + case result := <-resultCh: + computedVMs = result.Val + err = result.Err + } + if err != nil { return responder.Error(err) }