@@ -29,10 +29,10 @@ import (
2929 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3030 "k8s.io/apimachinery/pkg/labels"
3131 "k8s.io/apimachinery/pkg/types"
32- "k8s.io/apimachinery/pkg/util/wait"
3332 kubeinformers "k8s.io/client-go/informers"
3433 coreinformers "k8s.io/client-go/informers/core/v1"
3534 "k8s.io/client-go/tools/cache"
35+ "sigs.k8s.io/external-dns/source/informers"
3636 v1 "sigs.k8s.io/gateway-api/apis/v1"
3737 "sigs.k8s.io/gateway-api/apis/v1beta1"
3838 gateway "sigs.k8s.io/gateway-api/pkg/client/clientset/versioned"
@@ -42,7 +42,6 @@ import (
4242 "sigs.k8s.io/external-dns/endpoint"
4343 "sigs.k8s.io/external-dns/source/annotations"
4444 "sigs.k8s.io/external-dns/source/fqdn"
45- "sigs.k8s.io/external-dns/source/informers"
4645)
4746
4847const (
@@ -78,9 +77,8 @@ func newGatewayInformerFactory(client gateway.Interface, namespace string, label
7877 opts = append (opts , gwinformers .WithNamespace (namespace ))
7978 }
8079 if labelSelector != nil && ! labelSelector .Empty () {
81- lbls := labelSelector .String ()
8280 opts = append (opts , gwinformers .WithTweakListOptions (func (o * metav1.ListOptions ) {
83- o .LabelSelector = lbls
81+ o .LabelSelector = labelSelector . String ()
8482 }))
8583 }
8684 return gwinformers .NewSharedInformerFactoryWithOptions (client , 0 , opts ... )
@@ -105,9 +103,13 @@ type gatewayRouteSource struct {
105103 ignoreHostnameAnnotation bool
106104}
107105
108- func newGatewayRouteSource (clients ClientGenerator , config * Config , kind string , newInformerFn newGatewayRouteInformerFunc ) (Source , error ) {
109- ctx := context .TODO ()
110-
106+ func newGatewayRouteSource (
107+ ctx context.Context ,
108+ clients ClientGenerator ,
109+ config * Config ,
110+ kind string ,
111+ newInformerFn newGatewayRouteInformerFunc ,
112+ ) (Source , error ) {
111113 gwLabels , err := getLabelSelector (config .GatewayLabelFilter )
112114 if err != nil {
113115 return nil , err
@@ -150,18 +152,20 @@ func newGatewayRouteSource(clients ClientGenerator, config *Config, kind string,
150152 nsInformer := kubeInformerFactory .Core ().V1 ().Namespaces () // TODO: Namespace informer should be shared across gateway sources.
151153 nsInformer .Informer () // Register with factory before starting.
152154
153- informerFactory .Start (wait .NeverStop )
154- kubeInformerFactory .Start (wait .NeverStop )
155- if rtInformerFactory != informerFactory {
156- rtInformerFactory .Start (wait .NeverStop )
155+ informerFactory .Start (ctx .Done ())
156+ kubeInformerFactory .Start (ctx .Done ())
157157
158+ if rtInformerFactory != informerFactory {
159+ rtInformerFactory .Start (ctx .Done ())
158160 if err := informers .WaitForCacheSync (ctx , rtInformerFactory ); err != nil {
159161 return nil , err
160162 }
161163 }
164+
162165 if err := informers .WaitForCacheSync (ctx , informerFactory ); err != nil {
163166 return nil , err
164167 }
168+
165169 if err := informers .WaitForCacheSync (ctx , kubeInformerFactory ); err != nil {
166170 return nil , err
167171 }
@@ -187,12 +191,12 @@ func newGatewayRouteSource(clients ClientGenerator, config *Config, kind string,
187191 return src , nil
188192}
189193
190- func (src * gatewayRouteSource ) AddEventHandler (ctx context.Context , handler func ()) {
194+ func (src * gatewayRouteSource ) AddEventHandler (_ context.Context , handler func ()) {
191195 log .Debugf ("Adding event handlers for %s" , src .rtKind )
192196 eventHandler := eventHandlerFunc (handler )
193- src .gwInformer .Informer ().AddEventHandler (eventHandler )
194- src .rtInformer .Informer ().AddEventHandler (eventHandler )
195- src .nsInformer .Informer ().AddEventHandler (eventHandler )
197+ _ , _ = src .gwInformer .Informer ().AddEventHandler (eventHandler )
198+ _ , _ = src .rtInformer .Informer ().AddEventHandler (eventHandler )
199+ _ , _ = src .nsInformer .Informer ().AddEventHandler (eventHandler )
196200}
197201
198202func (src * gatewayRouteSource ) Endpoints (ctx context.Context ) ([]* endpoint.Endpoint , error ) {
0 commit comments