@@ -83,29 +83,34 @@ func (ei *EventIngester) setupEventInformer() {
8383 _ , err := eventInformer .AddEventHandler (cache.ResourceEventHandlerFuncs {
8484 AddFunc : func (obj interface {}) {
8585 if event , ok := obj .(* corev1.Event ); ok {
86- // Send Warning events for incident detection
8786 if event .Type == corev1 .EventTypeWarning {
8887 ei .sendEvent (event , "CREATE" )
8988 }
9089 }
9190 },
9291 UpdateFunc : func (oldObj , newObj interface {}) {
93- if event , ok := newObj .(* corev1.Event ); ok {
94- // Send updates for Warning events (count increases indicate repeated issues)
95- if event .Type == corev1 .EventTypeWarning {
96- ei .sendEvent (event , "UPDATE" )
97- }
92+ newEvent , ok := newObj .(* corev1.Event )
93+ if ! ok || newEvent .Type != corev1 .EventTypeWarning {
94+ return
9895 }
99- },
100- DeleteFunc : func (obj interface {}) {
101- obj = unwrapDeletedObject (obj )
102- if event , ok := obj .(* corev1.Event ); ok {
103- // Track deletion of warning events
104- if event .Type == corev1 .EventTypeWarning {
105- ei .sendEvent (event , "DELETE" )
96+ // The informer re-sync (every 5 min) fires UpdateFunc for ALL cached objects,
97+ // including stale K8s events that haven't changed. Detect and skip these:
98+ // if the ResourceVersion is unchanged, it's a no-op re-sync, not a real update.
99+ if oldEvent , ok := oldObj .(* corev1.Event ); ok {
100+ if oldEvent .ResourceVersion == newEvent .ResourceVersion {
101+ ei .logger .Debug ("Skipping re-synced event (unchanged ResourceVersion)" ,
102+ zap .String ("reason" , newEvent .Reason ),
103+ zap .String ("involvedObject" , fmt .Sprintf ("%s/%s" , newEvent .InvolvedObject .Kind , newEvent .InvolvedObject .Name )),
104+ zap .String ("namespace" , newEvent .InvolvedObject .Namespace ),
105+ zap .String ("resourceVersion" , newEvent .ResourceVersion ))
106+ return
106107 }
107108 }
109+ ei .sendEvent (newEvent , "UPDATE" )
108110 },
111+ // DeleteFunc intentionally omitted: K8s event deletion is garbage collection
112+ // (default 1-hour TTL), not an incident signal. Sending deleted events would
113+ // inject stale signals into the server's incident detection pipeline.
109114 })
110115 if err != nil {
111116 ei .logger .Error ("Failed to add event event handler" , zap .Error (err ))
0 commit comments