forked from mirror/client_golang
Merge pull request #472 from prometheus/beorn7/registry
Fix a few minor things...
This commit is contained in:
commit
daeaac0cfb
|
@ -40,7 +40,8 @@ type Collector interface {
|
||||||
// Collector may yield any Metric it sees fit in its Collect method.
|
// Collector may yield any Metric it sees fit in its Collect method.
|
||||||
//
|
//
|
||||||
// This method idempotently sends the same descriptors throughout the
|
// This method idempotently sends the same descriptors throughout the
|
||||||
// lifetime of the Collector.
|
// lifetime of the Collector. It may be called concurrently and
|
||||||
|
// therefore must be implemented in a concurrency safe way.
|
||||||
//
|
//
|
||||||
// If a Collector encounters an error while executing this method, it
|
// If a Collector encounters an error while executing this method, it
|
||||||
// must send an invalid descriptor (created with NewInvalidDesc) to
|
// must send an invalid descriptor (created with NewInvalidDesc) to
|
||||||
|
|
|
@ -107,9 +107,6 @@ type Registerer interface {
|
||||||
// Collector, and for providing a Collector that will not cause
|
// Collector, and for providing a Collector that will not cause
|
||||||
// inconsistent metrics on collection. (This would lead to scrape
|
// inconsistent metrics on collection. (This would lead to scrape
|
||||||
// errors.)
|
// errors.)
|
||||||
//
|
|
||||||
// It is in general not safe to register the same Collector multiple
|
|
||||||
// times concurrently.
|
|
||||||
Register(Collector) error
|
Register(Collector) error
|
||||||
// MustRegister works like Register but registers any number of
|
// MustRegister works like Register but registers any number of
|
||||||
// Collectors and panics upon the first registration that causes an
|
// Collectors and panics upon the first registration that causes an
|
||||||
|
@ -273,7 +270,12 @@ func (r *Registry) Register(c Collector) error {
|
||||||
close(descChan)
|
close(descChan)
|
||||||
}()
|
}()
|
||||||
r.mtx.Lock()
|
r.mtx.Lock()
|
||||||
defer r.mtx.Unlock()
|
defer func() {
|
||||||
|
// Drain channel in case of premature return to not leak a goroutine.
|
||||||
|
for range descChan {
|
||||||
|
}
|
||||||
|
r.mtx.Unlock()
|
||||||
|
}()
|
||||||
// Conduct various tests...
|
// Conduct various tests...
|
||||||
for desc := range descChan {
|
for desc := range descChan {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue