From b2a02140dbc7e2aa295606ac53b81998a2a74e96 Mon Sep 17 00:00:00 2001 From: Tim Allclair Date: Wed, 17 Jul 2019 14:40:36 -0700 Subject: [PATCH 1/2] Don't delete service endpoints when a generic error occurs --- pkg/controller/endpoint/endpoints_controller.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/controller/endpoint/endpoints_controller.go b/pkg/controller/endpoint/endpoints_controller.go index fd2da304e0d..b2157e75f70 100644 --- a/pkg/controller/endpoint/endpoints_controller.go +++ b/pkg/controller/endpoint/endpoints_controller.go @@ -411,6 +411,10 @@ func (e *EndpointController) syncService(key string) error { } service, err := e.serviceLister.Services(namespace).Get(name) if err != nil { + if !errors.IsNotFound(err) { + return err + } + // Delete the corresponding endpoint, as the service has been deleted. // TODO: Please note that this will delete an endpoint when a // service is deleted. However, if we're down at the time when From 8fc988e7dd116bd279f691badf8d53db8f9bfd7a Mon Sep 17 00:00:00 2001 From: Tim Allclair Date: Wed, 31 Jul 2019 15:09:35 -0700 Subject: [PATCH 2/2] Unit test endpoints controller service deletion --- .../endpoint/endpoints_controller_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/controller/endpoint/endpoints_controller_test.go b/pkg/controller/endpoint/endpoints_controller_test.go index 6b7236acce1..2d1d200ed5f 100644 --- a/pkg/controller/endpoint/endpoints_controller_test.go +++ b/pkg/controller/endpoint/endpoints_controller_test.go @@ -1708,3 +1708,20 @@ func TestPodDeleteBatching(t *testing.T) { }) } } + +func TestSyncEndpointsServiceNotFound(t *testing.T) { + ns := metav1.NamespaceDefault + testServer, endpointsHandler := makeTestServer(t, ns) + defer testServer.Close() + endpoints := newController(testServer.URL, 0) + endpoints.endpointsStore.Add(&v1.Endpoints{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: ns, + ResourceVersion: "1", + }, + }) + endpoints.syncService(ns + "/foo") + endpointsHandler.ValidateRequestCount(t, 1) + endpointsHandler.ValidateRequest(t, testapi.Default.ResourcePath("endpoints", ns, "foo"), "DELETE", nil) +}