From c3d4ca8db61c2856a666bb56e721dc7ff08dd380 Mon Sep 17 00:00:00 2001 From: Ted Yu Date: Fri, 17 May 2019 09:30:54 -0700 Subject: [PATCH] Use lock in eventBroadcasterImpl#refreshExistingEventSeries Kubernetes-commit: 32241b0751c9b9bd5d061eae9a42bd88970d8478 --- tools/events/event_broadcaster.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/events/event_broadcaster.go b/tools/events/event_broadcaster.go index 9d373dd8..f2b3a99f 100644 --- a/tools/events/event_broadcaster.go +++ b/tools/events/event_broadcaster.go @@ -83,8 +83,8 @@ func newBroadcaster(sink EventSink, sleepDuration time.Duration) EventBroadcaste // TODO: add test for refreshExistingEventSeries func (e *eventBroadcasterImpl) refreshExistingEventSeries() { // TODO: Investigate whether lock contention won't be a problem - e.mu.RLock() - defer e.mu.RUnlock() + e.mu.Lock() + defer e.mu.Unlock() for isomorphicKey, event := range e.eventCache { if event.Series != nil { if recordedEvent, retry := recordEvent(e.sink, event); !retry { @@ -100,9 +100,9 @@ func (e *eventBroadcasterImpl) finishSeries() { e.mu.Lock() defer e.mu.Unlock() for isomorphicKey, event := range e.eventCache { - eventSerie := event.Series - if eventSerie != nil { - if eventSerie.LastObservedTime.Time.Add(finishTime).Before(time.Now()) { + eventSeries := event.Series + if eventSeries != nil { + if eventSeries.LastObservedTime.Time.Add(finishTime).Before(time.Now()) { if _, retry := recordEvent(e.sink, event); !retry { delete(e.eventCache, isomorphicKey) } @@ -174,8 +174,8 @@ func (e *eventBroadcasterImpl) attemptRecording(event *v1beta1.Event) *v1beta1.E func recordEvent(sink EventSink, event *v1beta1.Event) (*v1beta1.Event, bool) { var newEvent *v1beta1.Event var err error - isEventSerie := event.Series != nil - if isEventSerie { + isEventSeries := event.Series != nil + if isEventSeries { patch, err := createPatchBytesForSeries(event) if err != nil { klog.Errorf("Unable to calculate diff, no merge is possible: %v", err) @@ -184,7 +184,7 @@ func recordEvent(sink EventSink, event *v1beta1.Event) (*v1beta1.Event, bool) { newEvent, err = sink.Patch(event, patch) } // Update can fail because the event may have been removed and it no longer exists. - if !isEventSerie || (isEventSerie && util.IsKeyNotFoundError(err)) { + if !isEventSeries || (isEventSeries && util.IsKeyNotFoundError(err)) { // Making sure that ResourceVersion is empty on creation event.ResourceVersion = "" newEvent, err = sink.Create(event)