MCPcopy
hub / github.com/grafana/dskit / NewPool

Function NewPool

ring/client/pool.go:96–115  ·  view source on GitHub ↗

NewPool creates a new Pool.

(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger)

Source from the content-addressed store, hash-verified

94
95// NewPool creates a new Pool.
96func NewPool(clientName string, cfg PoolConfig, discovery PoolServiceDiscovery, factory PoolFactory, clientsMetric prometheus.Gauge, logger log.Logger) *Pool {
97 if cfg.MaxConcurrentHealthChecks == 0 {
98 cfg.MaxConcurrentHealthChecks = 16
99 }
100
101 p := &Pool{
102 cfg: cfg,
103 discovery: discovery,
104 factory: factory,
105 logger: logger,
106 clientName: clientName,
107 members: map[string]*poolMember{},
108 clientsMetric: clientsMetric,
109 }
110
111 p.Service = services.
112 NewTimerService(cfg.CheckInterval, nil, p.iteration, nil).
113 WithName(fmt.Sprintf("%s client pool", p.clientName))
114 return p
115}
116
117func (p *Pool) iteration(_ context.Context) error {
118 p.removeStaleClients()

Callers 4

TestPoolCacheFunction · 0.70
TestCleanUnhealthyFunction · 0.70
TestRemoveClientFunction · 0.70

Calls 2

NewTimerServiceFunction · 0.92
WithNameMethod · 0.80

Tested by 4

TestPoolCacheFunction · 0.56
TestCleanUnhealthyFunction · 0.56
TestRemoveClientFunction · 0.56