in internal/proxy/proxy.go [567:610]
func (c *Client) CheckConnections(ctx context.Context) (int, error) {
var (
wg sync.WaitGroup
errCh = make(chan error, len(c.mnts))
mnts = c.mnts
)
if c.fuseDir != "" {
mnts = c.fuseMounts()
}
for _, mnt := range mnts {
wg.Add(1)
go func(m *socketMount) {
defer wg.Done()
conn, err := c.dialer.Dial(ctx, m.inst, m.dialOpts...)
if err != nil {
errCh <- err
return
}
cErr := conn.Close()
if cErr != nil {
c.logger.Errorf(
"connection check failed to close connection for %v: %v",
m.inst, cErr,
)
}
}(mnt)
}
wg.Wait()
var mErr MultiErr
for i := 0; i < len(mnts); i++ {
select {
case err := <-errCh:
mErr = append(mErr, err)
default:
continue
}
}
mLen := len(mnts)
if len(mErr) > 0 {
return mLen, mErr
}
return mLen, nil
}