From 5f9d846fb481593fb37a52ec1777335b079e8329 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Tue, 8 Nov 2022 12:50:23 +0300 Subject: [PATCH] [#358] pool: Don't init session with dead node Signed-off-by: Denis Kirillov --- pool/pool.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pool/pool.go b/pool/pool.go index a17d2d3..ee560e7 100644 --- a/pool/pool.go +++ b/pool/pool.go @@ -1543,27 +1543,27 @@ func (p *Pool) Dial(ctx context.Context) error { for i, params := range p.rebalanceParams.nodesParams { clients := make([]client, len(params.weights)) for j, addr := range params.addresses { - c := p.clientBuilder(addr) - if err := c.dial(ctx); err != nil { + clients[j] = p.clientBuilder(addr) + if err := clients[j].dial(ctx); err != nil { if p.logger != nil { p.logger.Warn("failed to build client", zap.String("address", addr), zap.Error(err)) } + continue } var st session.Object - err := initSessionForDuration(ctx, &st, c, p.rebalanceParams.sessionExpirationDuration, *p.key) + err := initSessionForDuration(ctx, &st, clients[j], p.rebalanceParams.sessionExpirationDuration, *p.key) if err != nil { - c.setUnhealthy() + clients[j].setUnhealthy() if p.logger != nil { p.logger.Warn("failed to create neofs session token for client", zap.String("address", addr), zap.Error(err)) } - } else { - atLeastOneHealthy = true - _ = p.cache.Put(formCacheKey(addr, p.key), st) + continue } - clients[j] = c + _ = p.cache.Put(formCacheKey(addr, p.key), st) + atLeastOneHealthy = true } source := rand.NewSource(time.Now().UnixNano()) sampl := newSampler(params.weights, source)