@@ -12,6 +12,7 @@ import (
12
12
"fmt"
13
13
"strings"
14
14
15
+ "go.uber.org/atomic"
15
16
v1 "k8s.io/api/core/v1"
16
17
"k8s.io/apimachinery/pkg/labels"
17
18
listersv1 "k8s.io/client-go/listers/core/v1"
@@ -35,7 +36,7 @@ const (
35
36
// KubeServiceConfigProvider implements the ConfigProvider interface for the apiserver.
36
37
type KubeServiceConfigProvider struct {
37
38
lister listersv1.ServiceLister
38
- upToDate bool
39
+ upToDate * atomic. Bool
39
40
configErrors map [string ]ErrorMsgSet
40
41
telemetryStore * telemetry.Store
41
42
}
@@ -58,6 +59,7 @@ func NewKubeServiceConfigProvider(_ *pkgconfigsetup.ConfigurationProviders, tele
58
59
lister : servicesInformer .Lister (),
59
60
configErrors : make (map [string ]ErrorMsgSet ),
60
61
telemetryStore : telemetryStore ,
62
+ upToDate : atomic .NewBool (false ),
61
63
}
62
64
63
65
if _ , err := servicesInformer .Informer ().AddEventHandler (cache.ResourceEventHandlerFuncs {
@@ -91,7 +93,7 @@ func (k *KubeServiceConfigProvider) Collect(ctx context.Context) ([]integration.
91
93
if err != nil {
92
94
return nil , err
93
95
}
94
- k .upToDate = true
96
+ k .upToDate . Store ( true )
95
97
96
98
return k .parseServiceAnnotations (services , pkgconfigsetup .Datadog ())
97
99
}
@@ -100,13 +102,13 @@ func (k *KubeServiceConfigProvider) Collect(ctx context.Context) ([]integration.
100
102
//
101
103
//nolint:revive // TODO(CINT) Fix revive linter
102
104
func (k * KubeServiceConfigProvider ) IsUpToDate (ctx context.Context ) (bool , error ) {
103
- return k .upToDate , nil
105
+ return k .upToDate . Load () , nil
104
106
}
105
107
106
108
func (k * KubeServiceConfigProvider ) invalidate (obj interface {}) {
107
109
if obj != nil {
108
110
log .Trace ("Invalidating configs on new/deleted service" )
109
- k .upToDate = false
111
+ k .upToDate . Store ( false )
110
112
}
111
113
}
112
114
@@ -122,7 +124,7 @@ func (k *KubeServiceConfigProvider) invalidateIfChanged(old, obj interface{}) {
122
124
castedOld , ok := old .(* v1.Service )
123
125
if ! ok {
124
126
log .Errorf ("Expected a *v1.Service type, got: %T" , old )
125
- k .upToDate = false
127
+ k .upToDate . Store ( false )
126
128
return
127
129
}
128
130
// Quick exit if resversion did not change
@@ -132,7 +134,7 @@ func (k *KubeServiceConfigProvider) invalidateIfChanged(old, obj interface{}) {
132
134
// Compare annotations
133
135
if valuesDiffer (castedObj .Annotations , castedOld .Annotations , kubeServiceAnnotationPrefix ) {
134
136
log .Trace ("Invalidating configs on service change" )
135
- k .upToDate = false
137
+ k .upToDate . Store ( false )
136
138
return
137
139
}
138
140
}
0 commit comments