From e8715fce38d58ac23aaa00106a7b566b6a353adc Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Tue, 18 Mar 2025 15:39:15 +1000 Subject: [PATCH] fix: list containers if some of them concurrently removed, fixes #33 --- internal/machine/docker/server.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/machine/docker/server.go b/internal/machine/docker/server.go index 7720ab3e..9d873598 100644 --- a/internal/machine/docker/server.go +++ b/internal/machine/docker/server.go @@ -149,13 +149,17 @@ func (s *Server) ListContainers(ctx context.Context, req *pb.ListContainersReque if err != nil { return nil, status.Errorf(codes.Internal, err.Error()) } - containers := make([]types.ContainerJSON, len(containerSummaries)) - for i, cs := range containerSummaries { + containers := make([]types.ContainerJSON, 0, len(containerSummaries)) + for _, cs := range containerSummaries { c, err := s.client.ContainerInspect(ctx, cs.ID) if err != nil { + if client.IsErrNotFound(err) { + // The listed container may have been removed while we were inspecting other containers. + continue + } return nil, status.Errorf(codes.Internal, "inspect container %s: %v", cs.ID, err) } - containers[i] = c + containers = append(containers, c) } containersBytes, err := json.Marshal(containers)