mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Adding a nil check in endpointslicecache
This commit is contained in:
parent
397ed0e825
commit
a1e3afa28e
@ -59,6 +59,10 @@ type endpointInfo struct {
|
||||
Topology map[string]string
|
||||
}
|
||||
|
||||
// spToEndpointMap stores groups Endpoint objects by ServicePortName and
|
||||
// EndpointSlice name.
|
||||
type spToEndpointMap map[ServicePortName]map[string]Endpoint
|
||||
|
||||
// NewEndpointSliceCache initializes an EndpointSliceCache.
|
||||
func NewEndpointSliceCache(hostname string, isIPv6Mode *bool, recorder record.EventRecorder, makeEndpointInfo makeEndpointFunc) *EndpointSliceCache {
|
||||
if makeEndpointInfo == nil {
|
||||
@ -121,10 +125,15 @@ func (cache *EndpointSliceCache) EndpointsMap(serviceNN types.NamespacedName) En
|
||||
}
|
||||
|
||||
// endpointInfoByServicePort groups endpoint info by service port name and address.
|
||||
func (cache *EndpointSliceCache) endpointInfoByServicePort(serviceNN types.NamespacedName) map[ServicePortName]map[string]Endpoint {
|
||||
endpointInfoBySP := map[ServicePortName]map[string]Endpoint{}
|
||||
func (cache *EndpointSliceCache) endpointInfoByServicePort(serviceNN types.NamespacedName) spToEndpointMap {
|
||||
endpointInfoBySP := spToEndpointMap{}
|
||||
sliceInfoByName, ok := cache.sliceByServiceMap[serviceNN]
|
||||
|
||||
for _, sliceInfo := range cache.sliceByServiceMap[serviceNN] {
|
||||
if !ok {
|
||||
return endpointInfoBySP
|
||||
}
|
||||
|
||||
for _, sliceInfo := range sliceInfoByName {
|
||||
for _, port := range sliceInfo.Ports {
|
||||
if port.Name == nil {
|
||||
klog.Warningf("ignoring port with nil name %v", port)
|
||||
|
@ -163,7 +163,7 @@ func TestEndpointInfoByServicePort(t *testing.T) {
|
||||
namespacedName types.NamespacedName
|
||||
endpointSlices []*discovery.EndpointSlice
|
||||
hostname string
|
||||
expectedMap map[ServicePortName]map[string]Endpoint
|
||||
expectedMap spToEndpointMap
|
||||
}{
|
||||
"simple use case with 3 endpoints": {
|
||||
namespacedName: types.NamespacedName{Name: "svc1", Namespace: "ns1"},
|
||||
@ -171,7 +171,7 @@ func TestEndpointInfoByServicePort(t *testing.T) {
|
||||
endpointSlices: []*discovery.EndpointSlice{
|
||||
generateEndpointSlice("svc1", "ns1", 1, 3, 999, []string{"host1", "host2"}, []*int32{utilpointer.Int32Ptr(80)}),
|
||||
},
|
||||
expectedMap: map[ServicePortName]map[string]Endpoint{
|
||||
expectedMap: spToEndpointMap{
|
||||
{NamespacedName: types.NamespacedName{Name: "svc1", Namespace: "ns1"}, Port: "port-0"}: {
|
||||
"10.0.1.1": &BaseEndpointInfo{Endpoint: "10.0.1.1:80", IsLocal: false},
|
||||
"10.0.1.2": &BaseEndpointInfo{Endpoint: "10.0.1.2:80", IsLocal: true},
|
||||
@ -190,7 +190,7 @@ func TestEndpointInfoByServicePort(t *testing.T) {
|
||||
|
||||
got := esCache.endpointInfoByServicePort(tc.namespacedName)
|
||||
if !reflect.DeepEqual(got, tc.expectedMap) {
|
||||
t.Errorf("[%s] endpointInfoByServicePort does not match. Want: %v, Got: %v", name, tc.expectedMap, got)
|
||||
t.Errorf("[%s] endpointInfoByServicePort does not match. Want: %+v, Got: %+v", name, tc.expectedMap, got)
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user