in dialer.go [665:694]
func (d *Dialer) Close() error {
// Check if Close has already been called.
select {
case <-d.closed:
return nil
default:
}
close(d.closed)
d.lock.Lock()
for _, i := range d.cache {
_ = i.Close()
}
d.lock.Unlock()
d.metricsMu.Lock()
ctx, cancel := context.WithTimeout(context.Background(), metricShutdownTimeout)
defer cancel()
for _, mr := range d.metricRecorders {
// If a metric recorder doesn't shutdown cleanly, log the error and
// keep going. An error here isn't actionable and should not be
// returned to the caller.
if err := mr.Shutdown(ctx); err != nil {
d.logger.Debugf(context.Background(), "internal metric exporter failed to shutdown: %v", err)
}
}
d.metricsMu.Unlock()
return nil
}