@@ -1051,36 +1051,15 @@ func (l *Labeler) resourceSlicesForNode(node *v1.Node) []*resourcev1.ResourceSli
10511051// handlePodDeleteEvent processes pod delete events by recalculating node labels
10521052// after excluding the deleted pod from consideration
10531053func (l * Labeler ) handlePodDeleteEvent (obj any ) error {
1054- startTime := time .Now ()
1055-
1056- defer func () {
1057- metrics .EventHandlingDuration .Observe (time .Since (startTime ).Seconds ())
1058- }()
1059-
1060- pod , ok := obj .(* v1.Pod )
1061- if ! ok {
1062- return fmt .Errorf ("pod delete event: expected Pod object, got %T" , obj )
1063- }
1064-
1065- return l .withNodeLock (pod .Spec .NodeName , func () error {
1066- // Calculate and write under the same lock as node-driven reconciliation so
1067- // the startup sweep cannot overwrite this result with an older cache read.
1068- expectedDCGMVersion , err := l .getDCGMVersionForNode (pod .Spec .NodeName , pod )
1069- if err != nil {
1070- return fmt .Errorf ("failed to get DCGM version for node %s excluding deleted pod: %w" , pod .Spec .NodeName , err )
1071- }
1072-
1073- expectedDriverLabel , err := l .getDriverLabelForNode (pod .Spec .NodeName , pod )
1074- if err != nil {
1075- return fmt .Errorf ("failed to get driver label for node %s excluding deleted pod: %w" , pod .Spec .NodeName , err )
1076- }
1077-
1078- return l .updateNodeLabelsForPod (pod .Spec .NodeName , expectedDCGMVersion , expectedDriverLabel )
1079- })
1054+ return l .handlePodLabelEvent (obj , true )
10801055}
10811056
10821057// handlePodEvent processes all pod events (add, update) idempotently
10831058func (l * Labeler ) handlePodEvent (obj any ) error {
1059+ return l .handlePodLabelEvent (obj , false )
1060+ }
1061+
1062+ func (l * Labeler ) handlePodLabelEvent (obj any , deleting bool ) error {
10841063 startTime := time .Now ()
10851064
10861065 defer func () {
@@ -1092,13 +1071,20 @@ func (l *Labeler) handlePodEvent(obj any) error {
10921071 return fmt .Errorf ("pod event: expected Pod object, got %T" , obj )
10931072 }
10941073
1074+ var excludePod * v1.Pod
1075+ if deleting {
1076+ excludePod = pod
1077+ }
1078+
10951079 return l .withNodeLock (pod .Spec .NodeName , func () error {
1096- expectedDCGMVersion , err := l .getDCGMVersionForNode (pod .Spec .NodeName , nil )
1080+ // Calculate and write under the same lock as node-driven reconciliation so
1081+ // the startup sweep cannot overwrite this result with an older cache read.
1082+ expectedDCGMVersion , err := l .getDCGMVersionForNode (pod .Spec .NodeName , excludePod )
10971083 if err != nil {
10981084 return fmt .Errorf ("failed to get DCGM version for node %s: %w" , pod .Spec .NodeName , err )
10991085 }
11001086
1101- expectedDriverLabel , err := l .getDriverLabelForNode (pod .Spec .NodeName , nil )
1087+ expectedDriverLabel , err := l .getDriverLabelForNode (pod .Spec .NodeName , excludePod )
11021088 if err != nil {
11031089 return fmt .Errorf ("failed to get driver label for node %s: %w" , pod .Spec .NodeName , err )
11041090 }
0 commit comments