From 964bd001d40c1034d707def6cd0abb874b3e67bb Mon Sep 17 00:00:00 2001 From: William Findlay Date: Fri, 16 Feb 2024 13:26:22 -0500 Subject: [PATCH] exporter: fix hang when exporter fails to start [upstream commit: 44bd44c] The Exporter.Start() implementation uses a WaitGroup to wait until the exporter is ready after launching it in a goroutine. Unfortunately, this WaitGroup never gets set to Done when we encounter an error while starting the exporter. This ultimately causes the Tetragon process to hang indefinitely. Fix the issue by simply calling readyWG.Done() when we encounter an error here. Signed-off-by: William Findlay --- pkg/server/server.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/server/server.go b/pkg/server/server.go index c0c6ded5ba9..bcee926487d 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -136,14 +136,23 @@ func (s *Server) GetEventsWG(request *tetragon.GetEventsRequest, server tetragon }).Debug("Received a GetEvents request") allowList, err := filters.BuildFilterList(s.ctx, request.AllowList, filters.Filters) if err != nil { + if readyWG != nil { + readyWG.Done() + } return err } denyList, err := filters.BuildFilterList(s.ctx, request.DenyList, filters.Filters) if err != nil { + if readyWG != nil { + readyWG.Done() + } return err } aggregator, err := aggregator.NewAggregator(server, request.AggregationOptions) if err != nil { + if readyWG != nil { + readyWG.Done() + } return err } if aggregator != nil {