@@ -45,16 +45,7 @@ const (
4545// It provides a schema functionality to store fields and indexes
4646// information about naming and types.
4747type DB struct {
48- ldb * leveldb.DB
49-
50- compTimeMeter metrics.Meter // Meter for measuring the total time spent in database compaction
51- compReadMeter metrics.Meter // Meter for measuring the data read during compaction
52- compWriteMeter metrics.Meter // Meter for measuring the data written during compaction
53- writeDelayNMeter metrics.Meter // Meter for measuring the write delay number due to database compaction
54- writeDelayMeter metrics.Meter // Meter for measuring the write delay duration due to database compaction
55- diskReadMeter metrics.Meter // Meter for measuring the effective amount of data read
56- diskWriteMeter metrics.Meter // Meter for measuring the effective amount of data written
57-
48+ ldb * leveldb.DB
5849 quit chan struct {} // Quit channel to stop the metrics collection before closing the database
5950}
6051
@@ -86,13 +77,10 @@ func NewDB(path string, metricsPrefix string) (db *DB, err error) {
8677 }
8778 }
8879
89- // Configure meters for DB
90- db .configure (metricsPrefix )
91-
9280 // Create a quit channel for the periodic metrics collector and run it
9381 db .quit = make (chan struct {})
9482
95- go db .meter (10 * time .Second )
83+ go db .meter (metricsPrefix , 10 * time .Second )
9684
9785 return db , nil
9886}
@@ -169,19 +157,22 @@ func (db *DB) Close() (err error) {
169157 return db .ldb .Close ()
170158}
171159
172- // Configure configures the database metrics collectors
173- func (db * DB ) configure (prefix string ) {
174- // Initialize all the metrics collector at the requested prefix
175- db .compTimeMeter = metrics .NewRegisteredMeter (prefix + "compact/time" , nil )
176- db .compReadMeter = metrics .NewRegisteredMeter (prefix + "compact/input" , nil )
177- db .compWriteMeter = metrics .NewRegisteredMeter (prefix + "compact/output" , nil )
178- db .diskReadMeter = metrics .NewRegisteredMeter (prefix + "disk/read" , nil )
179- db .diskWriteMeter = metrics .NewRegisteredMeter (prefix + "disk/write" , nil )
180- db .writeDelayMeter = metrics .NewRegisteredMeter (prefix + "compact/writedelay/duration" , nil )
181- db .writeDelayNMeter = metrics .NewRegisteredMeter (prefix + "compact/writedelay/counter" , nil )
182- }
160+ func (db * DB ) meter (prefix string , refresh time.Duration ) {
161+ // Meter for measuring the total time spent in database compaction
162+ compTimeMeter := metrics .NewRegisteredMeter (prefix + "compact/time" , nil )
163+ // Meter for measuring the data read during compaction
164+ compReadMeter := metrics .NewRegisteredMeter (prefix + "compact/input" , nil )
165+ // Meter for measuring the data written during compaction
166+ compWriteMeter := metrics .NewRegisteredMeter (prefix + "compact/output" , nil )
167+ // Meter for measuring the write delay number due to database compaction
168+ writeDelayMeter := metrics .NewRegisteredMeter (prefix + "compact/writedelay/duration" , nil )
169+ // Meter for measuring the write delay duration due to database compaction
170+ writeDelayNMeter := metrics .NewRegisteredMeter (prefix + "compact/writedelay/counter" , nil )
171+ // Meter for measuring the effective amount of data read
172+ diskReadMeter := metrics .NewRegisteredMeter (prefix + "disk/read" , nil )
173+ // Meter for measuring the effective amount of data written
174+ diskWriteMeter := metrics .NewRegisteredMeter (prefix + "disk/write" , nil )
183175
184- func (db * DB ) meter (refresh time.Duration ) {
185176 // Create the counters to store current and previous compaction values
186177 compactions := make ([][]float64 , 2 )
187178 for i := 0 ; i < 2 ; i ++ {
@@ -234,14 +225,14 @@ func (db *DB) meter(refresh time.Duration) {
234225 }
235226 }
236227 // Update all the requested meters
237- if db . compTimeMeter != nil {
238- db . compTimeMeter .Mark (int64 ((compactions [i % 2 ][0 ] - compactions [(i - 1 )% 2 ][0 ]) * 1000 * 1000 * 1000 ))
228+ if compTimeMeter != nil {
229+ compTimeMeter .Mark (int64 ((compactions [i % 2 ][0 ] - compactions [(i - 1 )% 2 ][0 ]) * 1000 * 1000 * 1000 ))
239230 }
240- if db . compReadMeter != nil {
241- db . compReadMeter .Mark (int64 ((compactions [i % 2 ][1 ] - compactions [(i - 1 )% 2 ][1 ]) * 1024 * 1024 ))
231+ if compReadMeter != nil {
232+ compReadMeter .Mark (int64 ((compactions [i % 2 ][1 ] - compactions [(i - 1 )% 2 ][1 ]) * 1024 * 1024 ))
242233 }
243- if db . compWriteMeter != nil {
244- db . compWriteMeter .Mark (int64 ((compactions [i % 2 ][2 ] - compactions [(i - 1 )% 2 ][2 ]) * 1024 * 1024 ))
234+ if compWriteMeter != nil {
235+ compWriteMeter .Mark (int64 ((compactions [i % 2 ][2 ] - compactions [(i - 1 )% 2 ][2 ]) * 1024 * 1024 ))
245236 }
246237
247238 // Retrieve the write delay statistic
@@ -265,11 +256,11 @@ func (db *DB) meter(refresh time.Duration) {
265256 log .Error ("Failed to parse delay duration" , "err" , err )
266257 continue
267258 }
268- if db . writeDelayNMeter != nil {
269- db . writeDelayNMeter .Mark (delayN - delaystats [0 ])
259+ if writeDelayNMeter != nil {
260+ writeDelayNMeter .Mark (delayN - delaystats [0 ])
270261 }
271- if db . writeDelayMeter != nil {
272- db . writeDelayMeter .Mark (duration .Nanoseconds () - delaystats [1 ])
262+ if writeDelayMeter != nil {
263+ writeDelayMeter .Mark (duration .Nanoseconds () - delaystats [1 ])
273264 }
274265 // If a warning that db is performing compaction has been displayed, any subsequent
275266 // warnings will be withheld for one minute not to overwhelm the user.
@@ -300,11 +291,11 @@ func (db *DB) meter(refresh time.Duration) {
300291 log .Error ("Bad syntax of write entry" , "entry" , parts [1 ])
301292 continue
302293 }
303- if db . diskReadMeter != nil {
304- db . diskReadMeter .Mark (int64 ((nRead - iostats [0 ]) * 1024 * 1024 ))
294+ if diskReadMeter != nil {
295+ diskReadMeter .Mark (int64 ((nRead - iostats [0 ]) * 1024 * 1024 ))
305296 }
306- if db . diskWriteMeter != nil {
307- db . diskWriteMeter .Mark (int64 ((nWrite - iostats [1 ]) * 1024 * 1024 ))
297+ if diskWriteMeter != nil {
298+ diskWriteMeter .Mark (int64 ((nWrite - iostats [1 ]) * 1024 * 1024 ))
308299 }
309300 iostats [0 ], iostats [1 ] = nRead , nWrite
310301
0 commit comments