fix: eliminate a possible double-record of UnscheduledPodUpdate event handling latency

This commit is contained in:
Kensei Nakada
2024-10-09 12:52:09 +09:00
parent a2b3a4f4dc
commit 4f853fceb9

View File

@@ -133,7 +133,6 @@ func (sched *Scheduler) addPodToSchedulingQueue(obj interface{}) {
func (sched *Scheduler) updatePodInSchedulingQueue(oldObj, newObj interface{}) { func (sched *Scheduler) updatePodInSchedulingQueue(oldObj, newObj interface{}) {
start := time.Now() start := time.Now()
defer metrics.EventHandlingLatency.WithLabelValues(framework.UnscheduledPodUpdate.Label).Observe(metrics.SinceInSeconds(start))
logger := sched.logger logger := sched.logger
oldPod, newPod := oldObj.(*v1.Pod), newObj.(*v1.Pod) oldPod, newPod := oldObj.(*v1.Pod), newObj.(*v1.Pod)
@@ -143,8 +142,16 @@ func (sched *Scheduler) updatePodInSchedulingQueue(oldObj, newObj interface{}) {
return return
} }
isUnschedPodUpdateIncluded := false
for _, evt := range framework.PodSchedulingPropertiesChange(newPod, oldPod) { for _, evt := range framework.PodSchedulingPropertiesChange(newPod, oldPod) {
defer metrics.EventHandlingLatency.WithLabelValues(evt.Label).Observe(metrics.SinceInSeconds(start)) defer metrics.EventHandlingLatency.WithLabelValues(evt.Label).Observe(metrics.SinceInSeconds(start))
if evt.Label == framework.UnscheduledPodUpdate.Label {
isUnschedPodUpdateIncluded = true
}
}
if !isUnschedPodUpdateIncluded {
// make sure we always record the latency with UnscheduledPodUpdate label.
defer metrics.EventHandlingLatency.WithLabelValues(framework.UnscheduledPodUpdate.Label).Observe(metrics.SinceInSeconds(start))
} }
isAssumed, err := sched.Cache.IsAssumedPod(newPod) isAssumed, err := sched.Cache.IsAssumedPod(newPod)