Skip to content

Commit 72d5a27

Browse files
committed
core, metrics, p2p: switch some invalid counters to gauges
1 parent 4f6bf2f commit 72d5a27

File tree

6 files changed

+108
-70
lines changed

6 files changed

+108
-70
lines changed

core/rawdb/freezer.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ type freezer struct {
8080
func newFreezer(datadir string, namespace string) (*freezer, error) {
8181
// Create the initial freezer object
8282
var (
83-
readMeter = metrics.NewRegisteredMeter(namespace+"ancient/read", nil)
84-
writeMeter = metrics.NewRegisteredMeter(namespace+"ancient/write", nil)
85-
sizeCounter = metrics.NewRegisteredCounter(namespace+"ancient/size", nil)
83+
readMeter = metrics.NewRegisteredMeter(namespace+"ancient/read", nil)
84+
writeMeter = metrics.NewRegisteredMeter(namespace+"ancient/write", nil)
85+
sizeGauge = metrics.NewRegisteredGauge(namespace+"ancient/size", nil)
8686
)
8787
// Ensure the datadir is not a symbolic link if it exists.
8888
if info, err := os.Lstat(datadir); !os.IsNotExist(err) {
@@ -103,7 +103,7 @@ func newFreezer(datadir string, namespace string) (*freezer, error) {
103103
instanceLock: lock,
104104
}
105105
for name, disableSnappy := range freezerNoSnappy {
106-
table, err := newTable(datadir, name, readMeter, writeMeter, sizeCounter, disableSnappy)
106+
table, err := newTable(datadir, name, readMeter, writeMeter, sizeGauge, disableSnappy)
107107
if err != nil {
108108
for _, table := range freezer.tables {
109109
table.Close()

core/rawdb/freezer_table.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,18 @@ type freezerTable struct {
9494
// to count how many historic items have gone missing.
9595
itemOffset uint32 // Offset (number of discarded items)
9696

97-
headBytes uint32 // Number of bytes written to the head file
98-
readMeter metrics.Meter // Meter for measuring the effective amount of data read
99-
writeMeter metrics.Meter // Meter for measuring the effective amount of data written
100-
sizeCounter metrics.Counter // Counter for tracking the combined size of all freezer tables
97+
headBytes uint32 // Number of bytes written to the head file
98+
readMeter metrics.Meter // Meter for measuring the effective amount of data read
99+
writeMeter metrics.Meter // Meter for measuring the effective amount of data written
100+
sizeGauge metrics.Gauge // Gauge for tracking the combined size of all freezer tables
101101

102102
logger log.Logger // Logger with database path and table name ambedded
103103
lock sync.RWMutex // Mutex protecting the data file descriptors
104104
}
105105

106106
// newTable opens a freezer table with default settings - 2G files
107-
func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeCounter metrics.Counter, disableSnappy bool) (*freezerTable, error) {
108-
return newCustomTable(path, name, readMeter, writeMeter, sizeCounter, 2*1000*1000*1000, disableSnappy)
107+
func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeGauge metrics.Gauge, disableSnappy bool) (*freezerTable, error) {
108+
return newCustomTable(path, name, readMeter, writeMeter, sizeGauge, 2*1000*1000*1000, disableSnappy)
109109
}
110110

111111
// openFreezerFileForAppend opens a freezer table file and seeks to the end
@@ -149,7 +149,7 @@ func truncateFreezerFile(file *os.File, size int64) error {
149149
// newCustomTable opens a freezer table, creating the data and index files if they are
150150
// non existent. Both files are truncated to the shortest common length to ensure
151151
// they don't go out of sync.
152-
func newCustomTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeCounter metrics.Counter, maxFilesize uint32, noCompression bool) (*freezerTable, error) {
152+
func newCustomTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, sizeGauge metrics.Gauge, maxFilesize uint32, noCompression bool) (*freezerTable, error) {
153153
// Ensure the containing directory exists and open the indexEntry file
154154
if err := os.MkdirAll(path, 0755); err != nil {
155155
return nil, err
@@ -172,7 +172,7 @@ func newCustomTable(path string, name string, readMeter metrics.Meter, writeMete
172172
files: make(map[uint32]*os.File),
173173
readMeter: readMeter,
174174
writeMeter: writeMeter,
175-
sizeCounter: sizeCounter,
175+
sizeGauge: sizeGauge,
176176
name: name,
177177
path: path,
178178
logger: log.New("database", path, "table", name),
@@ -189,7 +189,7 @@ func newCustomTable(path string, name string, readMeter metrics.Meter, writeMete
189189
tab.Close()
190190
return nil, err
191191
}
192-
tab.sizeCounter.Inc(int64(size))
192+
tab.sizeGauge.Inc(int64(size))
193193

194194
return tab, nil
195195
}
@@ -378,7 +378,7 @@ func (t *freezerTable) truncate(items uint64) error {
378378
if err != nil {
379379
return err
380380
}
381-
t.sizeCounter.Dec(int64(oldSize - newSize))
381+
t.sizeGauge.Dec(int64(oldSize - newSize))
382382

383383
return nil
384384
}
@@ -510,7 +510,7 @@ func (t *freezerTable) Append(item uint64, blob []byte) error {
510510
t.index.Write(idx.marshallBinary())
511511

512512
t.writeMeter.Mark(int64(bLen + indexEntrySize))
513-
t.sizeCounter.Inc(int64(bLen + indexEntrySize))
513+
t.sizeGauge.Inc(int64(bLen + indexEntrySize))
514514

515515
atomic.AddUint64(&t.items, 1)
516516
return nil

core/rawdb/freezer_table_test.go

+31-31
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func TestFreezerBasics(t *testing.T) {
5656
// set cutoff at 50 bytes
5757
f, err := newCustomTable(os.TempDir(),
5858
fmt.Sprintf("unittest-%d", rand.Uint64()),
59-
metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter(), 50, true)
59+
metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge(), 50, true)
6060
if err != nil {
6161
t.Fatal(err)
6262
}
@@ -99,11 +99,11 @@ func TestFreezerBasicsClosing(t *testing.T) {
9999
// set cutoff at 50 bytes
100100
var (
101101
fname = fmt.Sprintf("basics-close-%d", rand.Uint64())
102-
rm, wm, sc = metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
102+
rm, wm, sg = metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
103103
f *freezerTable
104104
err error
105105
)
106-
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
106+
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
107107
if err != nil {
108108
t.Fatal(err)
109109
}
@@ -112,7 +112,7 @@ func TestFreezerBasicsClosing(t *testing.T) {
112112
data := getChunk(15, x)
113113
f.Append(uint64(x), data)
114114
f.Close()
115-
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
115+
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
116116
if err != nil {
117117
t.Fatal(err)
118118
}
@@ -129,7 +129,7 @@ func TestFreezerBasicsClosing(t *testing.T) {
129129
t.Fatalf("test %d, got \n%x != \n%x", y, got, exp)
130130
}
131131
f.Close()
132-
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
132+
f, err = newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
133133
if err != nil {
134134
t.Fatal(err)
135135
}
@@ -139,11 +139,11 @@ func TestFreezerBasicsClosing(t *testing.T) {
139139
// TestFreezerRepairDanglingHead tests that we can recover if index entries are removed
140140
func TestFreezerRepairDanglingHead(t *testing.T) {
141141
t.Parallel()
142-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
142+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
143143
fname := fmt.Sprintf("dangling_headtest-%d", rand.Uint64())
144144

145145
{ // Fill table
146-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
146+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
147147
if err != nil {
148148
t.Fatal(err)
149149
}
@@ -172,7 +172,7 @@ func TestFreezerRepairDanglingHead(t *testing.T) {
172172
idxFile.Close()
173173
// Now open it again
174174
{
175-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
175+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
176176
if err != nil {
177177
t.Fatal(err)
178178
}
@@ -190,11 +190,11 @@ func TestFreezerRepairDanglingHead(t *testing.T) {
190190
// TestFreezerRepairDanglingHeadLarge tests that we can recover if very many index entries are removed
191191
func TestFreezerRepairDanglingHeadLarge(t *testing.T) {
192192
t.Parallel()
193-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
193+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
194194
fname := fmt.Sprintf("dangling_headtest-%d", rand.Uint64())
195195

196196
{ // Fill a table and close it
197-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
197+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
198198
if err != nil {
199199
t.Fatal(err)
200200
}
@@ -222,7 +222,7 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) {
222222
idxFile.Close()
223223
// Now open it again
224224
{
225-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
225+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
226226
if err != nil {
227227
t.Fatal(err)
228228
}
@@ -243,7 +243,7 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) {
243243
}
244244
// And if we open it, we should now be able to read all of them (new values)
245245
{
246-
f, _ := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
246+
f, _ := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
247247
for y := 1; y < 255; y++ {
248248
exp := getChunk(15, ^y)
249249
got, err := f.Retrieve(uint64(y))
@@ -260,11 +260,11 @@ func TestFreezerRepairDanglingHeadLarge(t *testing.T) {
260260
// TestSnappyDetection tests that we fail to open a snappy database and vice versa
261261
func TestSnappyDetection(t *testing.T) {
262262
t.Parallel()
263-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
263+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
264264
fname := fmt.Sprintf("snappytest-%d", rand.Uint64())
265265
// Open with snappy
266266
{
267-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
267+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
268268
if err != nil {
269269
t.Fatal(err)
270270
}
@@ -277,7 +277,7 @@ func TestSnappyDetection(t *testing.T) {
277277
}
278278
// Open without snappy
279279
{
280-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, false)
280+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, false)
281281
if err != nil {
282282
t.Fatal(err)
283283
}
@@ -289,7 +289,7 @@ func TestSnappyDetection(t *testing.T) {
289289

290290
// Open with snappy
291291
{
292-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
292+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
293293
if err != nil {
294294
t.Fatal(err)
295295
}
@@ -317,11 +317,11 @@ func assertFileSize(f string, size int64) error {
317317
// the index is repaired
318318
func TestFreezerRepairDanglingIndex(t *testing.T) {
319319
t.Parallel()
320-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
320+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
321321
fname := fmt.Sprintf("dangling_indextest-%d", rand.Uint64())
322322

323323
{ // Fill a table and close it
324-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
324+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
325325
if err != nil {
326326
t.Fatal(err)
327327
}
@@ -357,7 +357,7 @@ func TestFreezerRepairDanglingIndex(t *testing.T) {
357357
// 45, 45, 15
358358
// with 3+3+1 items
359359
{
360-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
360+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
361361
if err != nil {
362362
t.Fatal(err)
363363
}
@@ -374,11 +374,11 @@ func TestFreezerRepairDanglingIndex(t *testing.T) {
374374
func TestFreezerTruncate(t *testing.T) {
375375

376376
t.Parallel()
377-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
377+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
378378
fname := fmt.Sprintf("truncation-%d", rand.Uint64())
379379

380380
{ // Fill table
381-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
381+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
382382
if err != nil {
383383
t.Fatal(err)
384384
}
@@ -395,7 +395,7 @@ func TestFreezerTruncate(t *testing.T) {
395395
}
396396
// Reopen, truncate
397397
{
398-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
398+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
399399
if err != nil {
400400
t.Fatal(err)
401401
}
@@ -417,10 +417,10 @@ func TestFreezerTruncate(t *testing.T) {
417417
// That will rewind the index, and _should_ truncate the head file
418418
func TestFreezerRepairFirstFile(t *testing.T) {
419419
t.Parallel()
420-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
420+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
421421
fname := fmt.Sprintf("truncationfirst-%d", rand.Uint64())
422422
{ // Fill table
423-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
423+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
424424
if err != nil {
425425
t.Fatal(err)
426426
}
@@ -448,7 +448,7 @@ func TestFreezerRepairFirstFile(t *testing.T) {
448448
}
449449
// Reopen
450450
{
451-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
451+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
452452
if err != nil {
453453
t.Fatal(err)
454454
}
@@ -473,10 +473,10 @@ func TestFreezerRepairFirstFile(t *testing.T) {
473473
// - check that we did not keep the rdonly file descriptors
474474
func TestFreezerReadAndTruncate(t *testing.T) {
475475
t.Parallel()
476-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
476+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
477477
fname := fmt.Sprintf("read_truncate-%d", rand.Uint64())
478478
{ // Fill table
479-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
479+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
480480
if err != nil {
481481
t.Fatal(err)
482482
}
@@ -493,7 +493,7 @@ func TestFreezerReadAndTruncate(t *testing.T) {
493493
}
494494
// Reopen and read all files
495495
{
496-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 50, true)
496+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 50, true)
497497
if err != nil {
498498
t.Fatal(err)
499499
}
@@ -519,10 +519,10 @@ func TestFreezerReadAndTruncate(t *testing.T) {
519519

520520
func TestOffset(t *testing.T) {
521521
t.Parallel()
522-
rm, wm, sc := metrics.NewMeter(), metrics.NewMeter(), metrics.NewCounter()
522+
rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge()
523523
fname := fmt.Sprintf("offset-%d", rand.Uint64())
524524
{ // Fill table
525-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 40, true)
525+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 40, true)
526526
if err != nil {
527527
t.Fatal(err)
528528
}
@@ -578,7 +578,7 @@ func TestOffset(t *testing.T) {
578578
}
579579
// Now open again
580580
{
581-
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sc, 40, true)
581+
f, err := newCustomTable(os.TempDir(), fname, rm, wm, sg, 40, true)
582582
if err != nil {
583583
t.Fatal(err)
584584
}

0 commit comments

Comments
 (0)