Skip to content
This repository was archived by the owner on Aug 13, 2019. It is now read-only.

Commit 1caa80c

Browse files
committed
WAL Watcher needs to take in and pass a Registerer to LiveReader.
Signed-off-by: Callum Styan <[email protected]>
1 parent 3a1fae4 commit 1caa80c

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

wal/wal_watcher.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ type WALWatcher struct {
105105
logger log.Logger
106106
walDir string
107107
lastCheckpoint string
108+
reg prometheus.Registerer
108109

109110
startTime int64
110111

@@ -121,12 +122,21 @@ type WALWatcher struct {
121122
}
122123

123124
// NewWALWatcher creates a new WAL watcher for a given WriteTo.
124-
func NewWALWatcher(logger log.Logger, name string, writer writeTo, walDir string) *WALWatcher {
125+
func NewWALWatcher(logger log.Logger, reg prometheus.Registerer, name string, writer writeTo, walDir string) *WALWatcher {
125126
if logger == nil {
126127
logger = log.NewNopLogger()
127128
}
129+
if reg != nil {
130+
// We can't use MustRegister because WALWatcher's are recreated on config changes within Prometheus.
131+
reg.Register(watcherRecordsRead)
132+
reg.Register(watcherRecordDecodeFails)
133+
reg.Register(watcherSamplesSentPreTailing)
134+
reg.Register(watcherCurrentSegment)
135+
}
136+
128137
return &WALWatcher{
129138
logger: logger,
139+
reg: reg,
130140
writer: writer,
131141
walDir: path.Join(walDir, "wal"),
132142
name: name,
@@ -298,7 +308,7 @@ func (w *WALWatcher) watch(segmentNum int, tail bool) error {
298308
}
299309
defer segment.Close()
300310

301-
reader := NewLiveReader(w.logger, segment)
311+
reader := NewLiveReader(w.logger, w.reg, segment)
302312

303313
readTicker := time.NewTicker(readPeriod)
304314
defer readTicker.Stop()
@@ -513,7 +523,7 @@ func (w *WALWatcher) readCheckpoint(checkpointDir string) error {
513523
}
514524
defer sr.Close()
515525

516-
r := NewLiveReader(w.logger, sr)
526+
r := NewLiveReader(w.logger, w.reg, sr)
517527
if err := w.readSegment(r, index, false); err != io.EOF && err != nil {
518528
return errors.Wrap(err, "readSegment")
519529
}

wal/wal_watcher_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func TestTailSamples(t *testing.T) {
134134
testutil.Ok(t, err)
135135

136136
wt := newWriteToMock()
137-
watcher := NewWALWatcher(nil, "", wt, dir)
137+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
138138
watcher.startTime = now.UnixNano()
139139

140140
// Set the Watcher's metrics so they're not nil pointers.
@@ -144,7 +144,7 @@ func TestTailSamples(t *testing.T) {
144144
testutil.Ok(t, err)
145145
defer segment.Close()
146146

147-
reader := NewLiveReader(nil, segment)
147+
reader := NewLiveReader(nil, nil, segment)
148148
// Use tail true so we can ensure we got the right number of samples.
149149
watcher.readSegment(reader, i, true)
150150
}
@@ -209,7 +209,7 @@ func TestReadToEndNoCheckpoint(t *testing.T) {
209209
testutil.Ok(t, err)
210210

211211
wt := newWriteToMock()
212-
watcher := NewWALWatcher(nil, "", wt, dir)
212+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
213213
go watcher.Start()
214214

215215
expected := seriesCount
@@ -291,7 +291,7 @@ func TestReadToEndWithCheckpoint(t *testing.T) {
291291
_, _, err = w.Segments()
292292
testutil.Ok(t, err)
293293
wt := newWriteToMock()
294-
watcher := NewWALWatcher(nil, "", wt, dir)
294+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
295295
go watcher.Start()
296296

297297
expected := seriesCount * 2
@@ -352,7 +352,7 @@ func TestReadCheckpoint(t *testing.T) {
352352
testutil.Ok(t, err)
353353

354354
wt := newWriteToMock()
355-
watcher := NewWALWatcher(nil, "", wt, dir)
355+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
356356
// watcher.
357357
go watcher.Start()
358358

@@ -419,7 +419,7 @@ func TestReadCheckpointMultipleSegments(t *testing.T) {
419419
}
420420

421421
wt := newWriteToMock()
422-
watcher := NewWALWatcher(nil, "", wt, dir)
422+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
423423
watcher.maxSegment = -1
424424

425425
// Set the Watcher's metrics so they're not nil pointers.
@@ -479,7 +479,7 @@ func TestCheckpointSeriesReset(t *testing.T) {
479479
testutil.Ok(t, err)
480480

481481
wt := newWriteToMock()
482-
watcher := NewWALWatcher(nil, "", wt, dir)
482+
watcher := NewWALWatcher(nil, nil, "", wt, dir)
483483
watcher.maxSegment = -1
484484
go watcher.Start()
485485

0 commit comments

Comments
 (0)