From db5b1271cdc78fca79ba28beecac7ca63b2c228f Mon Sep 17 00:00:00 2001 From: Mathew Merrick Date: Mon, 30 Sep 2024 17:58:57 +0000 Subject: [PATCH] restart if pktmon server closes --- .../windows/pktmon/pktmon_plugin_windows.go | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/plugin/windows/pktmon/pktmon_plugin_windows.go b/pkg/plugin/windows/pktmon/pktmon_plugin_windows.go index cb1daa0d8c..3756c3f17a 100644 --- a/pkg/plugin/windows/pktmon/pktmon_plugin_windows.go +++ b/pkg/plugin/windows/pktmon/pktmon_plugin_windows.go @@ -130,11 +130,13 @@ func (p *Plugin) Start(ctx context.Context) error { return ErrNilEnricher } + errChan := make(chan error) go func() { err := p.RunPktMonServer(ctx) if err != nil { p.l.Error("pktmon server exited", zap.Error(err)) } + errChan <- err }() err := p.SetupStream() @@ -143,14 +145,18 @@ func (p *Plugin) Start(ctx context.Context) error { } // run the getflows loop - for { - err := p.GetFlow(ctx) - if _, ok := status.FromError(err); ok { - p.l.Error("failed to get flow, retriable:", zap.Error(err)) - continue + go func() { + for { + err := p.GetFlow(ctx) + if _, ok := status.FromError(err); ok { + p.l.Error("failed to get flow, retriable:", zap.Error(err)) + continue + } + errChan <- fmt.Errorf("failed to get flow, unrecoverable: %w", err) } - return fmt.Errorf("failed to get flow, unrecoverable: %w", err) - } + }() + + return <-errChan } func (p *Plugin) SetupStream() error {