diff --git a/internal/server/event_handlers.go b/internal/server/event_handlers.go index 0cbd2e4f8..c3ff50f04 100644 --- a/internal/server/event_handlers.go +++ b/internal/server/event_handlers.go @@ -58,6 +58,9 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) ctx, cancel := context.WithTimeout(r.Context(), 15*time.Second) defer cancel() + // Remove any internal metadata before further processing the event. + excludeInternalMetadata(event) + alerts, err := s.getAllAlertsForEvent(ctx, event) if err != nil { eventLogger.Error(err, "failed to get alerts for the event") @@ -440,3 +443,14 @@ func (s *EventServer) enhanceEventWithAlertMetadata(ctx context.Context, event * event.Metadata = meta } } + +// excludeInternalMetadata removes any internal metadata from the given event. +func excludeInternalMetadata(event *eventv1.Event) { + if len(event.Metadata) == 0 { + return + } + excludeList := []string{eventv1.MetaTokenKey} + for _, key := range excludeList { + delete(event.Metadata, key) + } +} diff --git a/internal/server/event_handlers_test.go b/internal/server/event_handlers_test.go index 5fe4ebf8a..0b9f7aef6 100644 --- a/internal/server/event_handlers_test.go +++ b/internal/server/event_handlers_test.go @@ -1058,3 +1058,35 @@ func TestEnhanceEventWithAlertMetadata(t *testing.T) { }) } } + +func Test_excludeInternalMetadata(t *testing.T) { + tests := []struct { + name string + event eventv1.Event + wantMetadata map[string]string + }{ + { + name: "no metadata", + }, + { + name: "internal metadata", + event: eventv1.Event{ + Metadata: map[string]string{ + eventv1.MetaTokenKey: "aaaa", + eventv1.MetaRevisionKey: "bbbb", + }, + }, + wantMetadata: map[string]string{ + eventv1.MetaRevisionKey: "bbbb", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + g := NewWithT(t) + + excludeInternalMetadata(&tt.event) + g.Expect(tt.event.Metadata).To(BeEquivalentTo(tt.wantMetadata)) + }) + } +}