Skip to content

Commit 64d2545

Browse files
authored
Merge pull request kubernetes#91816 from p0lyn0mial/gc-discovery
GC: doesn't create monitors in the constructor
2 parents 17630c3 + 50db32c commit 64d2545

File tree

5 files changed

+5
-22
lines changed

5 files changed

+5
-22
lines changed

cmd/kube-controller-manager/app/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ go_library(
118118
"//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library",
119119
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
120120
"//staging/src/k8s.io/client-go/discovery/cached:go_default_library",
121-
"//staging/src/k8s.io/client-go/discovery/cached/memory:go_default_library",
122121
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
123122
"//staging/src/k8s.io/client-go/informers:go_default_library",
124123
"//staging/src/k8s.io/client-go/informers/storage/v1:go_default_library",

cmd/kube-controller-manager/app/core.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
v1 "k8s.io/api/core/v1"
3434
"k8s.io/apimachinery/pkg/runtime/schema"
3535
utilfeature "k8s.io/apiserver/pkg/util/feature"
36-
cacheddiscovery "k8s.io/client-go/discovery/cached/memory"
3736
storagev1informer "k8s.io/client-go/informers/storage/v1"
3837
clientset "k8s.io/client-go/kubernetes"
3938
"k8s.io/client-go/metadata"
@@ -500,24 +499,20 @@ func startGarbageCollectorController(ctx ControllerContext) (http.Handler, bool,
500499
}
501500

502501
gcClientset := ctx.ClientBuilder.ClientOrDie("generic-garbage-collector")
503-
discoveryClient := cacheddiscovery.NewMemCacheClient(gcClientset.Discovery())
504502

505503
config := ctx.ClientBuilder.ConfigOrDie("generic-garbage-collector")
506504
metadataClient, err := metadata.NewForConfig(config)
507505
if err != nil {
508506
return nil, true, err
509507
}
510508

511-
// Get an initial set of deletable resources to prime the garbage collector.
512-
deletableResources := garbagecollector.GetDeletableResources(discoveryClient)
513509
ignoredResources := make(map[schema.GroupResource]struct{})
514510
for _, r := range ctx.ComponentConfig.GarbageCollectorController.GCIgnoredResources {
515511
ignoredResources[schema.GroupResource{Group: r.Group, Resource: r.Resource}] = struct{}{}
516512
}
517513
garbageCollector, err := garbagecollector.NewGarbageCollector(
518514
metadataClient,
519515
ctx.RESTMapper,
520-
deletableResources,
521516
ignoredResources,
522517
ctx.ObjectOrMetadataInformerFactory,
523518
ctx.InformersStarted,

pkg/controller/garbagecollector/garbagecollector.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ type GarbageCollector struct {
7676
func NewGarbageCollector(
7777
metadataClient metadata.Interface,
7878
mapper resettableRESTMapper,
79-
deletableResources map[schema.GroupVersionResource]struct{},
8079
ignoredResources map[schema.GroupResource]struct{},
8180
sharedInformers controller.InformerFactory,
8281
informersStarted <-chan struct{},
@@ -91,7 +90,7 @@ func NewGarbageCollector(
9190
attemptToOrphan: attemptToOrphan,
9291
absentOwnerCache: absentOwnerCache,
9392
}
94-
gb := &GraphBuilder{
93+
gc.dependencyGraphBuilder = &GraphBuilder{
9594
metadataClient: metadataClient,
9695
informersStarted: informersStarted,
9796
restMapper: mapper,
@@ -105,10 +104,6 @@ func NewGarbageCollector(
105104
sharedInformers: sharedInformers,
106105
ignoredResources: ignoredResources,
107106
}
108-
if err := gb.syncMonitors(deletableResources); err != nil {
109-
utilruntime.HandleError(fmt.Errorf("failed to sync all monitors: %v", err))
110-
}
111-
gc.dependencyGraphBuilder = gb
112107

113108
return gc, nil
114109
}

pkg/controller/garbagecollector/garbagecollector_test.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ func TestGarbageCollectorConstruction(t *testing.T) {
8181
// construction will not fail.
8282
alwaysStarted := make(chan struct{})
8383
close(alwaysStarted)
84-
gc, err := NewGarbageCollector(metadataClient, rm, twoResources, map[schema.GroupResource]struct{}{},
84+
gc, err := NewGarbageCollector(metadataClient, rm, map[schema.GroupResource]struct{}{},
8585
controller.NewInformerFactory(sharedInformers, metadataInformers), alwaysStarted)
8686
if err != nil {
8787
t.Fatal(err)
8888
}
89-
assert.Equal(t, 1, len(gc.dependencyGraphBuilder.monitors))
89+
assert.Equal(t, 0, len(gc.dependencyGraphBuilder.monitors))
9090

9191
// Make sure resource monitor syncing creates and stops resource monitors.
9292
tweakableRM.Add(schema.GroupVersionKind{Group: "tpr.io", Version: "v1", Kind: "unknown"}, nil)
@@ -198,12 +198,11 @@ func setupGC(t *testing.T, config *restclient.Config) garbageCollector {
198198
t.Fatal(err)
199199
}
200200

201-
podResource := map[schema.GroupVersionResource]struct{}{{Version: "v1", Resource: "pods"}: {}}
202201
client := fake.NewSimpleClientset()
203202
sharedInformers := informers.NewSharedInformerFactory(client, 0)
204203
alwaysStarted := make(chan struct{})
205204
close(alwaysStarted)
206-
gc, err := NewGarbageCollector(metadataClient, &testRESTMapper{testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Scheme)}, podResource, ignoredResources, sharedInformers, alwaysStarted)
205+
gc, err := NewGarbageCollector(metadataClient, &testRESTMapper{testrestmapper.TestOnlyStaticRESTMapper(legacyscheme.Scheme)}, ignoredResources, sharedInformers, alwaysStarted)
207206
if err != nil {
208207
t.Fatal(err)
209208
}
@@ -827,13 +826,10 @@ func TestGarbageCollectorSync(t *testing.T) {
827826
t.Fatal(err)
828827
}
829828

830-
podResource := map[schema.GroupVersionResource]struct{}{
831-
{Group: "", Version: "v1", Resource: "pods"}: {},
832-
}
833829
sharedInformers := informers.NewSharedInformerFactory(client, 0)
834830
alwaysStarted := make(chan struct{})
835831
close(alwaysStarted)
836-
gc, err := NewGarbageCollector(metadataClient, rm, podResource, map[schema.GroupResource]struct{}{}, sharedInformers, alwaysStarted)
832+
gc, err := NewGarbageCollector(metadataClient, rm, map[schema.GroupResource]struct{}{}, sharedInformers, alwaysStarted)
837833
if err != nil {
838834
t.Fatal(err)
839835
}

test/integration/garbagecollector/garbage_collector_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ func setupWithServer(t *testing.T, result *kubeapiservertesting.TestServer, work
232232
discoveryClient := cacheddiscovery.NewMemCacheClient(clientSet.Discovery())
233233
restMapper := restmapper.NewDeferredDiscoveryRESTMapper(discoveryClient)
234234
restMapper.Reset()
235-
deletableResources := garbagecollector.GetDeletableResources(discoveryClient)
236235
config := *result.ClientConfig
237236
metadataClient, err := metadata.NewForConfig(&config)
238237
if err != nil {
@@ -249,7 +248,6 @@ func setupWithServer(t *testing.T, result *kubeapiservertesting.TestServer, work
249248
gc, err := garbagecollector.NewGarbageCollector(
250249
metadataClient,
251250
restMapper,
252-
deletableResources,
253251
garbagecollector.DefaultIgnoredResources(),
254252
controller.NewInformerFactory(sharedInformers, metadataInformers),
255253
alwaysStarted,

0 commit comments

Comments
 (0)