File tree Expand file tree Collapse file tree 2 files changed +35
-1
lines changed
pkg/controller/utils/datadog Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Original file line number Diff line number Diff line change @@ -166,7 +166,10 @@ func (f *ForwardersManager) unregisterForwarder(id string) error {
166166 f .Lock ()
167167 defer f .Unlock ()
168168 if _ , found := f .metricsForwarders [id ]; ! found {
169- return fmt .Errorf ("%s not found" , id )
169+ // Idempotency: deletion/finalization paths can call Unregister multiple times due to requeues.
170+ // If the forwarder is already removed, treat it as a success to avoid noisy error logs.
171+ log .V (1 ).Info ("Metrics forwarder already unregistered" , "ID" , id )
172+ return nil
170173 }
171174 f .metricsForwarders [id ].stop ()
172175 delete (f .metricsForwarders , id )
Original file line number Diff line number Diff line change 1+ // Unless explicitly stated otherwise all files in this repository are licensed
2+ // under the Apache License Version 2.0.
3+ // This product includes software developed at Datadog (https://www.datadoghq.com/).
4+ // Copyright 2016-present Datadog, Inc.
5+
6+ package datadog
7+
8+ import "testing"
9+
10+ func TestForwardersManager_unregisterForwarder_Idempotent (t * testing.T ) {
11+ t .Parallel ()
12+
13+ fm := & ForwardersManager {
14+ metricsForwarders : make (map [string ]* metricsForwarder ),
15+ }
16+
17+ id := "DatadogAgentInternal/foo/test"
18+ fm .metricsForwarders [id ] = & metricsForwarder {
19+ stopChan : make (chan struct {}),
20+ }
21+
22+ // First unregister removes it.
23+ if err := fm .unregisterForwarder (id ); err != nil {
24+ t .Fatalf ("expected no error when unregistering existing forwarder, got: %v" , err )
25+ }
26+
27+ // Second unregister should still be a no-op.
28+ if err := fm .unregisterForwarder (id ); err != nil {
29+ t .Fatalf ("expected no error when unregistering already-unregistered forwarder, got: %v" , err )
30+ }
31+ }
You can’t perform that action at this time.
0 commit comments