예제 #1
0
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)
	}
}
예제 #2
0
// 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)
}
예제 #3
0
// 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)
}
예제 #4
0
파일: stats.go 프로젝트: mjibson/cockroach
// 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)
}
예제 #5
0
func setMVCCStats(
	ctx context.Context, eng engine.ReadWriter, rangeID roachpb.RangeID, newMS enginepb.MVCCStats,
) error {
	return engine.MVCCSetRangeStats(ctx, eng, rangeID, &newMS)
}
예제 #6
0
// 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)
}
예제 #7
0
func setMVCCStats(eng engine.ReadWriter, rangeID roachpb.RangeID, newMS enginepb.MVCCStats) error {
	return engine.MVCCSetRangeStats(context.Background(), eng, rangeID, &newMS)
}