fixed a couple of issues flagged by coderabbit

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
Dmitri Dolguikh
2026-07-01 16:43:53 +02:00
parent b684f8570a
commit fb22695894
3 changed files with 10 additions and 6 deletions

View File

@@ -223,12 +223,12 @@ func (m *Manager) startSender(ctx context.Context, flowConfigInterval time.Durat
collectedEvents := m.logger.ResetAggregationWindow()
events := collectedEvents.GetAggregatedEvents()
for _, event := range events {
m.eventsWithoutAcks.StoreEvent(event)
if err := m.send(event); err != nil {
log.Errorf("failed to send flow event to server: %v", err)
} else {
log.Tracef("sent flow event: %s", event.ID)
}
m.eventsWithoutAcks.StoreEvent(event)
}
}
}
@@ -271,6 +271,7 @@ func (m *Manager) startRetries(ctx context.Context, flowConfigInterval time.Dura
case <-ctx.Done():
return
case <-timer.C:
resetBackoff := true
for _, e := range m.eventsWithoutAcks.GetEvents() {
if e.Timestamp.Add(time.Second).After(time.Now()) {
// grace period on retries to avoid early retries
@@ -278,12 +279,15 @@ func (m *Manager) startRetries(ctx context.Context, flowConfigInterval time.Dura
continue
}
if err := m.send(e); err != nil {
timer = time.NewTimer(retryBackoff.NextBackOff()) //nolint:staticcheck,wastedassign
timer = time.NewTimer(retryBackoff.NextBackOff())
resetBackoff = false
break
}
}
retryBackoff.Reset()
timer = time.NewTimer(m.retryInterval)
if resetBackoff { // use regular retry interval in absense of network errors
retryBackoff.Reset()
timer = time.NewTimer(m.retryInterval)
}
}
}
}

View File

@@ -70,7 +70,7 @@ func (am *AggregatingMemory) ResetAggregationWindow() types.FlowEventAggregator
defer am.mux.Unlock()
now := time.Now()
toret := AggregatingMemory{WindowStart: am.WindowStart, WindowEnd: now, Memory: Memory{events: am.events}}
toret := AggregatingMemory{WindowStart: am.WindowStart, WindowEnd: now, Memory: Memory{events: am.events}, rnd: v2.NewPCG(rand.Uint64(), rand.Uint64())}
am.events = make(map[uuid.UUID]*types.Event)
am.WindowStart = now

View File

@@ -109,7 +109,7 @@ func (c *GRPCClient) Close() error {
func (c *GRPCClient) Send(event *proto.FlowEvent) error {
c.mu.Lock()
stream := c.stream
c.mu.Unlock()
defer c.mu.Unlock() // stream.Send() is not safe to call concurrently from multiple goroutines
if stream == nil {
return errors.New("stream not initialized")