mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Fix reporting network_programming_latency metrics in kube-proxy
This commit is contained in:
		@@ -167,7 +167,10 @@ func (ect *EndpointChangeTracker) Update(previous, current *v1.Endpoints) bool {
 | 
				
			|||||||
		ect.items[namespacedName] = change
 | 
							ect.items[namespacedName] = change
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if t := getLastChangeTriggerTime(endpoints.Annotations); !t.IsZero() {
 | 
						// In case of Endpoints deletion, the LastChangeTriggerTime annotation is
 | 
				
			||||||
 | 
						// by-definition coming from the time of last update, which is not what
 | 
				
			||||||
 | 
						// we want to measure. So we simply ignore it in this cases.
 | 
				
			||||||
 | 
						if t := getLastChangeTriggerTime(endpoints.Annotations); !t.IsZero() && current != nil {
 | 
				
			||||||
		ect.lastChangeTriggerTimes[namespacedName] = append(ect.lastChangeTriggerTimes[namespacedName], t)
 | 
							ect.lastChangeTriggerTimes[namespacedName] = append(ect.lastChangeTriggerTimes[namespacedName], t)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -222,7 +225,12 @@ func (ect *EndpointChangeTracker) EndpointSliceUpdate(endpointSlice *discovery.E
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if changeNeeded {
 | 
						if changeNeeded {
 | 
				
			||||||
		metrics.EndpointChangesPending.Inc()
 | 
							metrics.EndpointChangesPending.Inc()
 | 
				
			||||||
		if t := getLastChangeTriggerTime(endpointSlice.Annotations); !t.IsZero() {
 | 
							// In case of Endpoints deletion, the LastChangeTriggerTime annotation is
 | 
				
			||||||
 | 
							// by-definition coming from the time of last update, which is not what
 | 
				
			||||||
 | 
							// we want to measure. So we simply ignore it in this cases.
 | 
				
			||||||
 | 
							// TODO(wojtek-t, robscott): Address the problem for EndpointSlice deletion
 | 
				
			||||||
 | 
							// when other EndpointSlice for that service still exist.
 | 
				
			||||||
 | 
							if t := getLastChangeTriggerTime(endpointSlice.Annotations); !t.IsZero() && !removeSlice {
 | 
				
			||||||
			ect.lastChangeTriggerTimes[namespacedName] =
 | 
								ect.lastChangeTriggerTimes[namespacedName] =
 | 
				
			||||||
				append(ect.lastChangeTriggerTimes[namespacedName], t)
 | 
									append(ect.lastChangeTriggerTimes[namespacedName], t)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1413,6 +1413,14 @@ func TestLastChangeTriggerTime(t *testing.T) {
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
			expected: map[types.NamespacedName][]time.Time{createName("ns", "ep1"): {t2}},
 | 
								expected: map[types.NamespacedName][]time.Time{createName("ns", "ep1"): {t2}},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "delete",
 | 
				
			||||||
 | 
								scenario: func(fp *FakeProxier) {
 | 
				
			||||||
 | 
									e := createEndpoints("ns", "ep1", t1)
 | 
				
			||||||
 | 
									fp.deleteEndpoints(e)
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								expected: map[types.NamespacedName][]time.Time{},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, tc := range testCases {
 | 
						for _, tc := range testCases {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user