@@ -106,10 +106,6 @@ type ProxyClientConnection struct {
106
106
dialAddress string // cached for logging
107
107
}
108
108
109
- const (
110
- destHostKey key = iota
111
- )
112
-
113
109
func (c * ProxyClientConnection ) send (pkt * client.Packet ) error {
114
110
defer func (start time.Time ) { metrics .Metrics .ObserveFrontendWriteLatency (time .Since (start )) }(time .Now ())
115
111
if c .Mode == ModeGRPC {
@@ -193,8 +189,7 @@ func (pm *PendingDialManager) removeForStream(streamUID string) []*ProxyClientCo
193
189
194
190
// ProxyServer
195
191
type ProxyServer struct {
196
- // BackendManagers contains a list of BackendManagers
197
- BackendManagers []BackendManager
192
+ BackendManager BackendManager
198
193
199
194
// Readiness reports if the proxy server is ready, i.e., if the proxy
200
195
// server has connections to proxy agents (backends). Note that the
@@ -215,9 +210,6 @@ type ProxyServer struct {
215
210
216
211
// agent authentication
217
212
AgentAuthenticationOptions * AgentTokenAuthenticationOptions
218
-
219
- // TODO: move strategies into BackendStorage
220
- proxyStrategies []ProxyStrategy
221
213
}
222
214
223
215
// AgentTokenAuthenticationOptions contains list of parameters required for agent token based authentication
@@ -233,45 +225,17 @@ var _ agent.AgentServiceServer = &ProxyServer{}
233
225
234
226
var _ client.ProxyServiceServer = & ProxyServer {}
235
227
236
- func genContext (proxyStrategies []ProxyStrategy , reqHost string ) context.Context {
237
- ctx := context .Background ()
238
- for _ , ps := range proxyStrategies {
239
- switch ps {
240
- case ProxyStrategyDestHost :
241
- addr := util .RemovePortFromHost (reqHost )
242
- ctx = context .WithValue (ctx , destHostKey , addr )
243
- }
244
- }
245
- return ctx
246
- }
247
-
248
228
func (s * ProxyServer ) getBackend (reqHost string ) (Backend , error ) {
249
- ctx := genContext (s .proxyStrategies , reqHost )
250
- for _ , bm := range s .BackendManagers {
251
- be , err := bm .Backend (ctx )
252
- if err == nil {
253
- return be , nil
254
- }
255
- if ignoreNotFound (err ) != nil {
256
- // if can't find a backend through current BackendManager, move on
257
- // to the next one
258
- return nil , err
259
- }
260
- }
261
- return nil , & ErrNotFound {}
229
+ addr := util .RemovePortFromHost (reqHost )
230
+ return s .BackendManager .Backend (addr )
262
231
}
263
232
264
233
func (s * ProxyServer ) addBackend (backend Backend ) {
265
- // TODO: refactor BackendStorage to acquire lock once, not up to 3 times.
266
- for _ , bm := range s .BackendManagers {
267
- bm .AddBackend (backend )
268
- }
234
+ s .BackendManager .AddBackend (backend )
269
235
}
270
236
271
237
func (s * ProxyServer ) removeBackend (backend Backend ) {
272
- for _ , bm := range s .BackendManagers {
273
- bm .RemoveBackend (backend )
274
- }
238
+ s .BackendManager .RemoveBackend (backend )
275
239
}
276
240
277
241
func (s * ProxyServer ) addEstablished (agentID string , connID int64 , p * ProxyClientConnection ) {
@@ -377,30 +341,16 @@ func (s *ProxyServer) removeEstablishedForStream(streamUID string) []*ProxyClien
377
341
378
342
// NewProxyServer creates a new ProxyServer instance
379
343
func NewProxyServer (serverID string , proxyStrategies []ProxyStrategy , serverCount int , agentAuthenticationOptions * AgentTokenAuthenticationOptions ) * ProxyServer {
380
- var bms []BackendManager
381
- for _ , ps := range proxyStrategies {
382
- switch ps {
383
- case ProxyStrategyDestHost :
384
- bms = append (bms , NewDestHostBackendManager ())
385
- case ProxyStrategyDefault :
386
- bms = append (bms , NewDefaultBackendManager ())
387
- case ProxyStrategyDefaultRoute :
388
- bms = append (bms , NewDefaultRouteBackendManager ())
389
- default :
390
- klog .ErrorS (nil , "Unknown proxy strategy" , "strategy" , ps )
391
- }
392
- }
344
+ bm := NewDefaultBackendManager (proxyStrategies )
393
345
394
346
return & ProxyServer {
395
347
established : make (map [string ](map [int64 ]* ProxyClientConnection )),
396
348
PendingDial : NewPendingDialManager (),
397
349
serverID : serverID ,
398
350
serverCount : serverCount ,
399
- BackendManagers : bms ,
351
+ BackendManager : bm ,
400
352
AgentAuthenticationOptions : agentAuthenticationOptions ,
401
- // use the first backend-manager as the Readiness Manager
402
- Readiness : bms [0 ],
403
- proxyStrategies : proxyStrategies ,
353
+ Readiness : bm ,
404
354
}
405
355
}
406
356
0 commit comments