in pkg/metrics/collector/pod_ip_metrics.go [280:304]
func (c *podIPMetricsCollector) updateReuseIPStats(e fsnotify.Event, f string) {
reuseIP, ok := c.reuseMap[f]
switch {
case e.Op&fsnotify.Remove == fsnotify.Remove:
if !ok {
c.reuseMap[f] = &ipReuse{c.clock.Now(), 0}
} else {
reuseIP.ipReleasedTimestamp = c.clock.Now()
}
case e.Op&fsnotify.Create == fsnotify.Create:
if ok {
oldT := reuseIP.ipReleasedTimestamp
diff := uint64(c.clock.Now().Sub(oldT).Milliseconds())
if diff > 0 {
reuseIP.ipReuseInterval = float64(diff)
c.reuseIPs.count++
c.reuseIPs.sum += float64(diff)
if diff < c.reuseIPs.min {
c.reuseIPs.min = diff
}
c.fillBuckets(diff)
}
}
}
}