Fix EndpointSliceController service deletion processing

syncService shouldn't return error if the service doesn't exist which
means it's triggered by service deletion, otherwise the service would be
enqueued repeatedly even its cleanup has been executed successfully.

This patch makes syncService return nil if the error is NotFound when
getting the service, like the other controllers do.
This commit is contained in:
Quan Tian 2019-09-21 09:32:18 -07:00
parent 60044a8acc
commit db6bbf2375
2 changed files with 4 additions and 3 deletions

View File

@ -251,6 +251,8 @@ func (c *Controller) syncService(key string) error {
if err != nil {
if apierrors.IsNotFound(err) {
c.triggerTimeTracker.DeleteService(namespace, name)
// The service has been deleted, return nil so that it won't be retried.
return nil
}
return err
}

View File

@ -140,9 +140,8 @@ func TestSyncServiceMissing(t *testing.T) {
err := esController.syncService(fmt.Sprintf("%s/%s", namespace, missingServiceName))
// Since the service doesn't exist, we should get a not found error
assert.NotNil(t, err, "Expected no error syncing service")
assert.Equal(t, err.Error(), "service \"notthere\" not found")
// nil should be returned when the service doesn't exist
assert.Nil(t, err, "Expected no error syncing service")
// That should mean no client actions were performed
assert.Len(t, client.Actions(), 0)