mirror of
				https://github.com/kubernetes-sigs/external-dns.git
				synced 2025-10-31 18:50:59 +01:00 
			
		
		
		
	Dynamically register cache provider metrics
This commit is contained in:
		
							parent
							
								
									ef0dd29cf5
								
							
						
					
					
						commit
						6c5faafbfe
					
				
							
								
								
									
										8
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								main.go
									
									
									
									
									
								
							| @ -402,10 +402,10 @@ func main() { | ||||
| 	} | ||||
| 
 | ||||
| 	if cfg.ProviderCacheTime > 0 { | ||||
| 		p = &provider.CachedProvider{ | ||||
| 			Provider:     p, | ||||
| 			RefreshDelay: cfg.ProviderCacheTime, | ||||
| 		} | ||||
| 		p = provider.NewCachedProvider( | ||||
| 			p, | ||||
| 			cfg.ProviderCacheTime, | ||||
| 		) | ||||
| 	} | ||||
| 
 | ||||
| 	var r registry.Registry | ||||
|  | ||||
| @ -17,6 +17,7 @@ package provider | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"sync" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| @ -46,6 +47,8 @@ var ( | ||||
| 			Help:      "Number of calls to the provider cache ApplyChanges.", | ||||
| 		}, | ||||
| 	) | ||||
| 
 | ||||
| 	registerCacheProviderMetrics = sync.Once{} | ||||
| ) | ||||
| 
 | ||||
| type CachedProvider struct { | ||||
| @ -55,6 +58,16 @@ type CachedProvider struct { | ||||
| 	cache        []*endpoint.Endpoint | ||||
| } | ||||
| 
 | ||||
| func NewCachedProvider(provider Provider, refreshDelay time.Duration) *CachedProvider { | ||||
| 	registerMetrics.Do(func() { | ||||
| 		prometheus.MustRegister(cachedRecordsCallsTotal) | ||||
| 	}) | ||||
| 	return &CachedProvider{ | ||||
| 		Provider:     provider, | ||||
| 		RefreshDelay: refreshDelay, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (c *CachedProvider) Records(ctx context.Context) ([]*endpoint.Endpoint, error) { | ||||
| 	if c.needRefresh() { | ||||
| 		log.Info("Records cache provider: refreshing records list cache") | ||||
| @ -95,7 +108,3 @@ func (c *CachedProvider) needRefresh() bool { | ||||
| 	log.Debug("Records cache last Read: ", c.lastRead, "expiration: ", c.RefreshDelay, " provider expiration:", c.lastRead.Add(c.RefreshDelay), "expired: ", time.Now().After(c.lastRead.Add(c.RefreshDelay))) | ||||
| 	return time.Now().After(c.lastRead.Add(c.RefreshDelay)) | ||||
| } | ||||
| 
 | ||||
| func init() { | ||||
| 	prometheus.MustRegister(cachedRecordsCallsTotal) | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user