Преглед изворни кода

Merge pull request #265 from zhanyr/master

fix race
Mikhail P пре 6 година
родитељ
комит
3c7535cba3
2 измењених фајлова са 15 додато и 1 уклоњено
  1. 1 1
      registry.go
  2. 14 0
      registry_test.go

+ 1 - 1
registry.go

@@ -219,9 +219,9 @@ type metricKV struct {
 }
 
 func (r *StandardRegistry) registered() []metricKV {
-	metrics := make([]metricKV, 0, len(r.metrics))
 	r.mutex.RLock()
 	defer r.mutex.RUnlock()
+	metrics := make([]metricKV, 0, len(r.metrics))
 	for name, i := range r.metrics {
 		metrics = append(metrics, metricKV{
 			name:  name,

+ 14 - 0
registry_test.go

@@ -377,3 +377,17 @@ func TestConcurrentRegistryAccess(t *testing.T) {
 		t.Fatal(i)
 	}
 }
+
+// exercise race detector
+func TestRegisterAndRegisteredConcurrency(t *testing.T)  {
+	r := NewRegistry()
+	wg := &sync.WaitGroup{}
+	wg.Add(1)
+	go func(r Registry, wg *sync.WaitGroup) {
+		defer wg.Done()
+		r.Each(func(name string, iface interface{}) {
+		})
+	}(r, wg)
+	r.Register("foo", NewCounter())
+	wg.Wait()
+}