Skip to content

Commit

Permalink
Fix revision discarded on event rate limiting key calculation
Browse files Browse the repository at this point in the history
Signed-off-by: Matheus Pimenta <[email protected]>
Co-authored-by: Max Jonas Werner <[email protected]>
  • Loading branch information
matheuscscp and makkes committed May 8, 2023
1 parent 4effb15 commit c50bd7b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
7 changes: 4 additions & 3 deletions internal/server/event_handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request)
return
}

cleanupMetadata(event)
event.Metadata = cleanupMetadata(*event)

ctx, cancel := context.WithTimeout(r.Context(), 15*time.Second)
defer cancel()
Expand Down Expand Up @@ -343,7 +343,8 @@ func (s *EventServer) eventMatchesAlert(ctx context.Context, event *eventv1.Even
}

// cleanupMetadata removes metadata entries which are not used for alerting
func cleanupMetadata(event *eventv1.Event) {
// from the event and returns a new map with the cleaned metadata.
func cleanupMetadata(event eventv1.Event) map[string]string {
group := event.InvolvedObject.GetObjectKind().GroupVersionKind().Group
excludeList := []string{
fmt.Sprintf("%s/%s", group, eventv1.MetaChecksumKey),
Expand All @@ -361,7 +362,7 @@ func cleanupMetadata(event *eventv1.Event) {
}
}

event.Metadata = meta
return meta
}

func inList(l []string, i string) bool {
Expand Down
17 changes: 12 additions & 5 deletions internal/server/event_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ func (s *EventServer) logRateLimitMiddleware(h http.Handler) http.Handler {
s.logger.V(1).Info("Discarding event, rate limiting duplicate events",
"reconciler kind", event.InvolvedObject.Kind,
"name", event.InvolvedObject.Name,
"namespace", event.InvolvedObject.Namespace)
"namespace", event.InvolvedObject.Namespace,
"event metadata", event.Metadata,
"rate limiting key", getEventKey(event))
}
})
}
Expand All @@ -148,12 +150,17 @@ func eventKeyFunc(r *http.Request) (string, error) {

r.Body = io.NopCloser(bytes.NewBuffer(body))

key := getEventKey(event)
digest := sha256.Sum256([]byte(key))
return fmt.Sprintf("%x", digest), nil
}

func getEventKey(event *eventv1.Event) string {
comps := []string{"event", event.InvolvedObject.Name, event.InvolvedObject.Namespace, event.InvolvedObject.Kind, event.Message}
revString, ok := event.Metadata[eventv1.MetaRevisionKey]
metadata := cleanupMetadata(*event)
revString, ok := metadata[eventv1.MetaRevisionKey]
if ok {
comps = append(comps, revString)
}
val := strings.Join(comps, "/")
digest := sha256.Sum256([]byte(val))
return fmt.Sprintf("%x", digest), nil
return strings.Join(comps, "/")
}

0 comments on commit c50bd7b

Please sign in to comment.