@cryptotaxi247 / netdata-1 / commits / ad8365e4a

fix(go.d/sd/net_listeners): exit if local-listeners constantly times out (#18757)

Ilya Mashchenko committed Oct 11, 2024 at 20:33 UTC ad8365e4af2782c2573af1a4989f264227f27eba
1 file changed +12 -1
src/go/plugin/go.d/agent/discovery/sd/discoverer/netlisteners/netlisteners.go
+12 -1
@@ -84,6 +84,9 @@ type (
84 cache map[uint64]*cacheItem // [target.Hash]
85
86 started chan struct{}
87 +
88 + successRuns int64
89 + timeoutRuns int64
90 }
91 cacheItem struct {
92 lastSeenTime time.Time
@@ -118,7 +121,7 @@ func (d *Discoverer) Discover(ctx context.Context, in chan<- []model.TargetGroup
121 return
122 case <-tk.C:
123 if err := d.discoverLocalListeners(ctx, in); err != nil {
121 - d.Warning(err)
124 + d.Error(err)
125 return
126 }
127 }
@@ -129,11 +132,19 @@ func (d *Discoverer) discoverLocalListeners(ctx context.Context, in chan<- []mod
132 bs, err := d.ll.discover(ctx)
133 if err != nil {
134 if errors.Is(err, context.Canceled) {
135 + // there is no point in continuing pointless attempts/use cpu
136 + // https://github.com/netdata/netdata/discussions/18751#discussioncomment-10908472
137 + if d.timeoutRuns++; d.timeoutRuns > 5 && d.successRuns == 0 {
138 + return err
139 + }
140 + d.Warning(err)
141 return nil
142 }
143 return err
144 }
145
146 + d.successRuns++
147 +
148 tgts, err := d.parseLocalListeners(bs)
149 if err != nil {
150 return err