@@ -29,7 +29,6 @@ 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"
@@ -39,10 +38,11 @@ import (
3938 gwinformers "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions"
4039 informers_v1beta1 "sigs.k8s.io/gateway-api/pkg/client/informers/externalversions/apis/v1beta1"
4140
41+ "sigs.k8s.io/external-dns/source/informers"
42+
4243 "sigs.k8s.io/external-dns/endpoint"
4344 "sigs.k8s.io/external-dns/source/annotations"
4445 "sigs.k8s.io/external-dns/source/fqdn"
45- "sigs.k8s.io/external-dns/source/informers"
4646)
4747
4848const (
@@ -78,9 +78,8 @@ func newGatewayInformerFactory(client gateway.Interface, namespace string, label
7878 opts = append (opts , gwinformers .WithNamespace (namespace ))
7979 }
8080 if labelSelector != nil && ! labelSelector .Empty () {
81- lbls := labelSelector .String ()
8281 opts = append (opts , gwinformers .WithTweakListOptions (func (o * metav1.ListOptions ) {
83- o .LabelSelector = lbls
82+ o .LabelSelector = labelSelector . String ()
8483 }))
8584 }
8685 return gwinformers .NewSharedInformerFactoryWithOptions (client , 0 , opts ... )
@@ -105,9 +104,13 @@ type gatewayRouteSource struct {
105104 ignoreHostnameAnnotation bool
106105}
107106
108- func newGatewayRouteSource (clients ClientGenerator , config * Config , kind string , newInformerFn newGatewayRouteInformerFunc ) (Source , error ) {
109- ctx := context .TODO ()
110-
107+ func newGatewayRouteSource (
108+ ctx context.Context ,
109+ clients ClientGenerator ,
110+ config * Config ,
111+ kind string ,
112+ newInformerFn newGatewayRouteInformerFunc ,
113+ ) (Source , error ) {
111114 gwLabels , err := getLabelSelector (config .GatewayLabelFilter )
112115 if err != nil {
113116 return nil , err
@@ -150,18 +153,20 @@ func newGatewayRouteSource(clients ClientGenerator, config *Config, kind string,
150153 nsInformer := kubeInformerFactory .Core ().V1 ().Namespaces () // TODO: Namespace informer should be shared across gateway sources.
151154 nsInformer .Informer () // Register with factory before starting.
152155
153- informerFactory .Start (wait .NeverStop )
154- kubeInformerFactory .Start (wait .NeverStop )
155- if rtInformerFactory != informerFactory {
156- rtInformerFactory .Start (wait .NeverStop )
156+ informerFactory .Start (ctx .Done ())
157+ kubeInformerFactory .Start (ctx .Done ())
157158
159+ if rtInformerFactory != informerFactory {
160+ rtInformerFactory .Start (ctx .Done ())
158161 if err := informers .WaitForCacheSync (ctx , rtInformerFactory ); err != nil {
159162 return nil , err
160163 }
161164 }
165+
162166 if err := informers .WaitForCacheSync (ctx , informerFactory ); err != nil {
163167 return nil , err
164168 }
169+
165170 if err := informers .WaitForCacheSync (ctx , kubeInformerFactory ); err != nil {
166171 return nil , err
167172 }
@@ -187,12 +192,12 @@ func newGatewayRouteSource(clients ClientGenerator, config *Config, kind string,
187192 return src , nil
188193}
189194
190- func (src * gatewayRouteSource ) AddEventHandler (ctx context.Context , handler func ()) {
195+ func (src * gatewayRouteSource ) AddEventHandler (_ context.Context , handler func ()) {
191196 log .Debugf ("Adding event handlers for %s" , src .rtKind )
192197 eventHandler := eventHandlerFunc (handler )
193- src .gwInformer .Informer ().AddEventHandler (eventHandler )
194- src .rtInformer .Informer ().AddEventHandler (eventHandler )
195- src .nsInformer .Informer ().AddEventHandler (eventHandler )
198+ _ , _ = src .gwInformer .Informer ().AddEventHandler (eventHandler )
199+ _ , _ = src .rtInformer .Informer ().AddEventHandler (eventHandler )
200+ _ , _ = src .nsInformer .Informer ().AddEventHandler (eventHandler )
196201}
197202
198203func (src * gatewayRouteSource ) Endpoints (ctx context.Context ) ([]* endpoint.Endpoint , error ) {
0 commit comments