func()

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

}