diff --git a/go/vt/vttablet/heartbeat/heartbeat.go b/go/vt/vttablet/heartbeat/heartbeat.go index 5bdabf0c40a..3f2d0738780 100644 --- a/go/vt/vttablet/heartbeat/heartbeat.go +++ b/go/vt/vttablet/heartbeat/heartbeat.go @@ -43,5 +43,7 @@ var ( readErrors = stats.NewInt("HeartbeatReadErrors") // HeartbeatCumulativeLagNs is incremented by the current lag at each heartbeat read interval. Plotting this // over time allows calculating of a rolling average lag. - lagNs = stats.NewInt("HeartbeatCumulativeLagNs") + cumulativeLagNs = stats.NewInt("HeartbeatCumulativeLagNs") + // HeartbeatCurrentLagNs is a point-in-time calculation of the lag, updated at each heartbeat read interval. + currentLagNs = stats.NewInt("HeartbeatCurrentLagNs") ) diff --git a/go/vt/vttablet/heartbeat/reader.go b/go/vt/vttablet/heartbeat/reader.go index afaf4ede255..a1243e9d59d 100644 --- a/go/vt/vttablet/heartbeat/reader.go +++ b/go/vt/vttablet/heartbeat/reader.go @@ -164,7 +164,8 @@ func (r *Reader) readHeartbeat() { } lag := r.now().Sub(time.Unix(0, ts)) - lagNs.Add(lag.Nanoseconds()) + cumulativeLagNs.Add(lag.Nanoseconds()) + currentLagNs.Set(lag.Nanoseconds()) reads.Add(1) r.lagMu.Lock() diff --git a/go/vt/vttablet/heartbeat/reader_test.go b/go/vt/vttablet/heartbeat/reader_test.go index 92e0389babe..179ee9901d5 100644 --- a/go/vt/vttablet/heartbeat/reader_test.go +++ b/go/vt/vttablet/heartbeat/reader_test.go @@ -48,7 +48,7 @@ func TestReaderReadHeartbeat(t *testing.T) { }}, }) - lagNs.Set(0) + cumulativeLagNs.Set(0) readErrors.Set(0) reads.Set(0) @@ -61,7 +61,7 @@ func TestReaderReadHeartbeat(t *testing.T) { if got, want := lag, 10*time.Second; got != want { t.Fatalf("wrong latest lag: got = %v, want = %v", tr.lastKnownLag, want) } - if got, want := lagNs.Get(), 10*time.Second.Nanoseconds(); got != want { + if got, want := cumulativeLagNs.Get(), 10*time.Second.Nanoseconds(); got != want { t.Fatalf("wrong cumulative lag: got = %v, want = %v", got, want) } if got, want := reads.Get(), int64(1); got != want { @@ -80,7 +80,7 @@ func TestReaderReadHeartbeatError(t *testing.T) { tr := newReader(db, mockNowFunc) defer tr.Close() - lagNs.Set(0) + cumulativeLagNs.Set(0) readErrors.Set(0) tr.readHeartbeat() @@ -92,7 +92,7 @@ func TestReaderReadHeartbeatError(t *testing.T) { if got, want := lag, 0*time.Second; got != want { t.Fatalf("wrong lastKnownLag: got = %v, want = %v", got, want) } - if got, want := lagNs.Get(), int64(0); got != want { + if got, want := cumulativeLagNs.Get(), int64(0); got != want { t.Fatalf("wrong cumulative lag: got = %v, want = %v", got, want) } if got, want := readErrors.Get(), int64(1); got != want {