1
diff --git a/stats.go b/stats.go
2
index 59723e6..1c72091 100644
3
--- a/gopkg.in/mgo.v2/stats.go
4
+++ b/gopkg.in/mgo.v2/stats.go
5
@@ -30,43 +30,29 @@ import (
10
-var statsMutex sync.Mutex
13
func SetStats(enabled bool) {
23
+ stats.reset(enabled)
26
-func GetStats() (snapshot Stats) {
31
+func GetStats() Stats {
33
+ defer stats.mu.RUnlock()
39
+ // If we call ResetStats we assume you want to use stats, so we enable
41
debug("Resetting stats")
44
- // These are absolute values:
45
- stats.Clusters = old.Clusters
46
- stats.SocketsInUse = old.SocketsInUse
47
- stats.SocketsAlive = old.SocketsAlive
48
- stats.SocketRefs = old.SocketRefs
61
@@ -78,70 +64,74 @@ type Stats struct {
65
-func (stats *Stats) cluster(delta int) {
68
- stats.Clusters += delta
70
+func (stats *Stats) reset(enabled bool) {
72
+ defer stats.mu.Unlock()
74
+ stats.MasterConns = 0
75
+ stats.SlaveConns = 0
77
+ stats.ReceivedOps = 0
78
+ stats.ReceivedDocs = 0
81
+ // These are absolute values so we don't reset them unless we are
82
+ // disabling stats altogether.
84
+ stats.SocketsInUse = 0
85
+ stats.SocketsAlive = 0
86
+ stats.SocketRefs = 0
90
+func (stats *Stats) cluster(delta int) {
92
+ stats.Clusters += delta
96
func (stats *Stats) conn(delta int, master bool) {
100
- stats.MasterConns += delta
102
- stats.SlaveConns += delta
104
- statsMutex.Unlock()
107
+ stats.MasterConns += delta
109
+ stats.SlaveConns += delta
114
func (stats *Stats) sentOps(delta int) {
117
- stats.SentOps += delta
118
- statsMutex.Unlock()
121
+ stats.SentOps += delta
125
func (stats *Stats) receivedOps(delta int) {
128
- stats.ReceivedOps += delta
129
- statsMutex.Unlock()
132
+ stats.ReceivedOps += delta
136
func (stats *Stats) receivedDocs(delta int) {
139
- stats.ReceivedDocs += delta
140
- statsMutex.Unlock()
143
+ stats.ReceivedDocs += delta
147
func (stats *Stats) socketsInUse(delta int) {
150
- stats.SocketsInUse += delta
151
- statsMutex.Unlock()
154
+ stats.SocketsInUse += delta
158
func (stats *Stats) socketsAlive(delta int) {
161
- stats.SocketsAlive += delta
162
- statsMutex.Unlock()
165
+ stats.SocketsAlive += delta
169
func (stats *Stats) socketRefs(delta int) {
172
- stats.SocketRefs += delta
173
- statsMutex.Unlock()
176
+ stats.SocketRefs += delta