@@ -77,12 +77,19 @@ type Frontend struct {
77
77
78
78
// New returns a new Frontend.
79
79
func New (cfg Config , ringName string , limitsRing ring.ReadRing , limits Limits , logger log.Logger , reg prometheus.Registerer ) (* Frontend , error ) {
80
- var servs []services.Service
80
+ // Set up a client pool for the limits service. The frontend will use this
81
+ // to make RPCs that get the current stream usage to checks per-tenant limits.
82
+ clientPoolFactory := limits_client .NewPoolFactory (cfg .ClientConfig )
83
+ clientPool := limits_client .NewPool (
84
+ ringName ,
85
+ cfg .ClientConfig .PoolConfig ,
86
+ limitsRing ,
87
+ clientPoolFactory ,
88
+ logger ,
89
+ )
81
90
82
- factory := limits_client .NewPoolFactory (cfg .ClientConfig )
83
- pool := limits_client .NewPool (ringName , cfg .ClientConfig .PoolConfig , limitsRing , factory , logger )
84
91
rateLimiter := limiter .NewRateLimiter (newRateLimitsAdapter (limits ), cfg .RecheckPeriod )
85
- streamUsage := NewRingStreamUsageGatherer (limitsRing , pool , logger )
92
+ streamUsage := NewRingStreamUsageGatherer (limitsRing , clientPool , logger )
86
93
87
94
f := & Frontend {
88
95
cfg : cfg ,
@@ -93,17 +100,16 @@ func New(cfg Config, ringName string, limitsRing ring.ReadRing, limits Limits, l
93
100
metrics : newMetrics (reg ),
94
101
}
95
102
96
- var err error
97
- f .lifecycler , err = ring .NewLifecycler (cfg .LifecyclerConfig , f , RingName , RingKey , true , logger , reg )
103
+ lifecycler , err := ring .NewLifecycler (cfg .LifecyclerConfig , f , RingName , RingKey , true , logger , reg )
98
104
if err != nil {
99
105
return nil , fmt .Errorf ("failed to create %s lifecycler: %w" , RingName , err )
100
106
}
107
+ f .lifecycler = lifecycler
101
108
// Watch the lifecycler
102
109
f .lifecyclerWatcher = services .NewFailureWatcher ()
103
110
f .lifecyclerWatcher .WatchService (f .lifecycler )
104
111
105
- servs = append (servs , f .lifecycler )
106
- servs = append (servs , pool )
112
+ servs := []services.Service {lifecycler , clientPool }
107
113
mgr , err := services .NewManager (servs ... )
108
114
if err != nil {
109
115
return nil , err
0 commit comments