diff --git a/pkg/controller/bootstrap/tokencleaner.go b/pkg/controller/bootstrap/tokencleaner.go index d41552d70ce..48998dca175 100644 --- a/pkg/controller/bootstrap/tokencleaner.go +++ b/pkg/controller/bootstrap/tokencleaner.go @@ -202,6 +202,11 @@ func (tc *TokenCleaner) evalSecret(o interface{}) { klog.V(3).Infof("Error deleting Secret: %v", err) } } else if ttl > 0 { - tc.queue.AddAfter(o, ttl) + key, err := controller.KeyFunc(o) + if err != nil { + utilruntime.HandleError(err) + return + } + tc.queue.AddAfter(key, ttl) } } diff --git a/pkg/controller/bootstrap/tokencleaner_test.go b/pkg/controller/bootstrap/tokencleaner_test.go index 6eea6321ba0..df56ea8a86c 100644 --- a/pkg/controller/bootstrap/tokencleaner_test.go +++ b/pkg/controller/bootstrap/tokencleaner_test.go @@ -110,10 +110,11 @@ func TestCleanerExpiredAt(t *testing.T) { secret := newTokenSecret("tokenID", "tokenSecret") addSecretExpiration(secret, timeString(2*time.Second)) + secrets.Informer().GetIndexer().Add(secret) + cleaner.enqueueSecrets(secret) expected := []core.Action{} verifyFunc := func() { - secrets.Informer().GetIndexer().Add(secret) - cleaner.evalSecret(secret) + cleaner.processNextWorkItem() verifyActions(t, expected, cl.Actions()) } // token has not expired currently