Skip to content

Commit 366cd45

Browse files
committed
Fix deletion handling in NEG tests and service creation latency
- Handle nil DeletionTimestamp gracefully by using current time when objects are deleted immediately without a deletion timestamp - Add explicit wait for ingress deletion in NEG test configuration to ensure all ingresses are fully removed before test completion - Remove incorrect warning logs that were preventing proper deletion tracking when DeletionTimestamp was nil These changes improve the reliability of NEG tests by properly tracking deletion phases even when Kubernetes performs immediate deletions, and ensuring proper cleanup sequencing.
1 parent 2ba928b commit 366cd45

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

clusterloader2/pkg/measurement/common/service_creation_latency.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ func (s *serviceCreationLatencyMeasurement) handleIngressObject(oldObj, newObj i
337337
return
338338
}
339339
newIngress, ok = newObj.(*networkingv1.Ingress)
340-
if newIngress != nil && !ok {
340+
if newObj != nil && !ok {
341341
klog.Errorf("%s: uncastable new object: %v", s, newObj)
342342
return
343343
}
@@ -369,11 +369,12 @@ func (s *serviceCreationLatencyMeasurement) deleteObject(svc *corev1.Service) er
369369
}
370370
s.lock.Lock()
371371
defer s.lock.Unlock()
372-
if svc.ObjectMeta.DeletionTimestamp == nil {
373-
klog.Warningf("DeletionTimestamp is nil for service: %v", key)
374-
return nil
372+
if svc.ObjectMeta.DeletionTimestamp != nil {
373+
s.creationTimes.Set(key, phaseName(deletingPhase, svc.Spec.Type), svc.ObjectMeta.DeletionTimestamp.Time)
374+
} else {
375+
// Object was deleted without DeletionTimestamp (immediate deletion)
376+
s.creationTimes.Set(key, phaseName(deletingPhase, svc.Spec.Type), time.Now())
375377
}
376-
s.creationTimes.Set(key, phaseName(deletingPhase, svc.Spec.Type), svc.ObjectMeta.DeletionTimestamp.Time)
377378
s.creationTimes.Set(key, phaseName(deletedPhase, svc.Spec.Type), time.Now())
378379
s.pingCheckers.DeleteAndStop(key)
379380
return nil
@@ -386,11 +387,12 @@ func (s *serviceCreationLatencyMeasurement) deleteIngressObject(ingress *network
386387
}
387388
s.lock.Lock()
388389
defer s.lock.Unlock()
389-
if ingress.ObjectMeta.DeletionTimestamp == nil {
390-
klog.Warningf("DeletionTimestamp is nil for service: %v", key)
391-
return nil
390+
if ingress.ObjectMeta.DeletionTimestamp != nil {
391+
s.creationTimes.Set(key, phaseName(deletingPhase, ingressType), ingress.ObjectMeta.DeletionTimestamp.Time)
392+
} else {
393+
// Object was deleted without DeletionTimestamp (immediate deletion)
394+
s.creationTimes.Set(key, phaseName(deletingPhase, ingressType), time.Now())
392395
}
393-
s.creationTimes.Set(key, phaseName(deletingPhase, ingressType), ingress.ObjectMeta.DeletionTimestamp.Time)
394396
s.creationTimes.Set(key, phaseName(deletedPhase, ingressType), time.Now())
395397
s.pingCheckers.DeleteAndStop(key)
396398
return nil

clusterloader2/testing/neg/config.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ steps:
119119
Method: WaitForControlledPodsRunning
120120
Params:
121121
action: gather
122+
- module:
123+
path: /modules/ingress-measurements.yaml
124+
params:
125+
action: waitForDeletion
122126
- name: Wait after deletion
123127
measurements:
124128
- Identifier: Wait

0 commit comments

Comments
 (0)