@@ -38,6 +38,9 @@ type EventBroadcasterProducer func() (caster record.EventBroadcaster, stopWithPr
38
38
// Provider is a recorder.Provider that records events to the k8s API server
39
39
// and to a logr Logger.
40
40
type Provider struct {
41
+ lock sync.RWMutex
42
+ stopped bool
43
+
41
44
// scheme to specify when creating a recorder
42
45
scheme * runtime.Scheme
43
46
// logger is the logger to use when logging diagnostic event info
@@ -70,7 +73,10 @@ func (p *Provider) Stop(shutdownCtx context.Context) {
70
73
// an invocation of getBroadcaster.
71
74
broadcaster := p .getBroadcaster ()
72
75
if p .stopBroadcaster {
76
+ p .lock .Lock ()
73
77
broadcaster .Shutdown ()
78
+ p .stopped = true
79
+ p .lock .Unlock ()
74
80
}
75
81
close (doneCh )
76
82
}()
@@ -144,13 +150,28 @@ func (l *lazyRecorder) ensureRecording() {
144
150
145
151
func (l * lazyRecorder ) Event (object runtime.Object , eventtype , reason , message string ) {
146
152
l .ensureRecording ()
147
- l .rec .Event (object , eventtype , reason , message )
153
+
154
+ l .prov .lock .RLock ()
155
+ if ! l .prov .stopped {
156
+ l .rec .Event (object , eventtype , reason , message )
157
+ }
158
+ l .prov .lock .RUnlock ()
148
159
}
149
160
func (l * lazyRecorder ) Eventf (object runtime.Object , eventtype , reason , messageFmt string , args ... interface {}) {
150
161
l .ensureRecording ()
151
- l .rec .Eventf (object , eventtype , reason , messageFmt , args ... )
162
+
163
+ l .prov .lock .RLock ()
164
+ if ! l .prov .stopped {
165
+ l .rec .Eventf (object , eventtype , reason , messageFmt , args ... )
166
+ }
167
+ l .prov .lock .RUnlock ()
152
168
}
153
169
func (l * lazyRecorder ) AnnotatedEventf (object runtime.Object , annotations map [string ]string , eventtype , reason , messageFmt string , args ... interface {}) {
154
170
l .ensureRecording ()
155
- l .rec .AnnotatedEventf (object , annotations , eventtype , reason , messageFmt , args ... )
171
+
172
+ l .prov .lock .RLock ()
173
+ if ! l .prov .stopped {
174
+ l .rec .AnnotatedEventf (object , annotations , eventtype , reason , messageFmt , args ... )
175
+ }
176
+ l .prov .lock .RUnlock ()
156
177
}
0 commit comments