func TestRangeStatsInit(t *testing.T) { defer leaktest.AfterTest(t)() tc := testContext{} tc.Start(t) defer tc.Stop() ms := engine.MVCCStats{ LiveBytes: 1, KeyBytes: 2, ValBytes: 3, IntentBytes: 4, LiveCount: 5, KeyCount: 6, ValCount: 7, IntentCount: 8, IntentAge: 9, GCBytesAge: 10, LastUpdateNanos: 11, } if err := engine.MVCCSetRangeStats(context.Background(), tc.engine, 1, &ms); err != nil { t.Fatal(err) } s, err := newRangeStats(1, tc.engine) if err != nil { t.Fatal(err) } if !reflect.DeepEqual(ms, s.mvccStats) { t.Errorf("mvcc stats mismatch %+v != %+v", ms, s.mvccStats) } }
// MergeMVCCStats merges the results of an MVCC operation or series of // MVCC operations into the range's stats. The intent age is augmented // by multiplying the previous intent count by the elapsed nanos since // the last update to range stats. Stats are stored to the underlying // engine and the rangeStats MVCCStats updated to reflect merged totals. func (rs *rangeStats) MergeMVCCStats(e engine.Engine, ms *engine.MVCCStats, nowNanos int64) error { rs.Lock() defer rs.Unlock() // Augment the current intent age. diffSeconds := nowNanos/1E9 - rs.LastUpdateNanos/1E9 ms.LastUpdateNanos = nowNanos ms.IntentAge += rs.IntentCount * diffSeconds ms.GCBytesAge += engine.MVCCComputeGCBytesAge(rs.KeyBytes+rs.ValBytes-rs.LiveBytes, diffSeconds) rs.MVCCStats.Add(ms) return engine.MVCCSetRangeStats(e, rs.rangeID, &rs.MVCCStats) }
// SetStats sets stats wholesale. func (rs *rangeStats) SetMVCCStats(e engine.Engine, ms engine.MVCCStats) error { rs.Lock() defer rs.Unlock() rs.MVCCStats = ms return engine.MVCCSetRangeStats(e, rs.rangeID, &ms) }
// SetStats sets stats wholesale. func (rs *rangeStats) SetMVCCStats(e engine.ReadWriter, ms engine.MVCCStats) error { rs.Lock() defer rs.Unlock() rs.mvccStats = ms return engine.MVCCSetRangeStats(context.Background(), e, rs.rangeID, &ms) }
func setMVCCStats( ctx context.Context, eng engine.ReadWriter, rangeID roachpb.RangeID, newMS enginepb.MVCCStats, ) error { return engine.MVCCSetRangeStats(ctx, eng, rangeID, &newMS) }
// MergeMVCCStats merges the results of an MVCC operation or series of MVCC // operations into the range's stats. Stats are stored to the underlying engine // and the rangeStats MVCCStats updated to reflect merged totals. func (rs *rangeStats) MergeMVCCStats(e engine.Engine, ms engine.MVCCStats) error { rs.Lock() defer rs.Unlock() rs.MVCCStats.Add(ms) return engine.MVCCSetRangeStats(context.Background(), e, rs.rangeID, &rs.MVCCStats) }
func setMVCCStats(eng engine.ReadWriter, rangeID roachpb.RangeID, newMS enginepb.MVCCStats) error { return engine.MVCCSetRangeStats(context.Background(), eng, rangeID, &newMS) }