github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/kv/kvserver/rditer/stats.go (about) 1 // Copyright 2015 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 package rditer 12 13 import ( 14 "github.com/cockroachdb/cockroach/pkg/roachpb" 15 "github.com/cockroachdb/cockroach/pkg/storage" 16 "github.com/cockroachdb/cockroach/pkg/storage/enginepb" 17 ) 18 19 // ComputeStatsForRange computes the stats for a given range by 20 // iterating over all key ranges for the given range that should 21 // be accounted for in its stats. 22 func ComputeStatsForRange( 23 d *roachpb.RangeDescriptor, reader storage.Reader, nowNanos int64, 24 ) (enginepb.MVCCStats, error) { 25 iter := reader.NewIterator(storage.IterOptions{UpperBound: d.EndKey.AsRawKey()}) 26 defer iter.Close() 27 28 ms := enginepb.MVCCStats{} 29 for _, keyRange := range MakeReplicatedKeyRanges(d) { 30 msDelta, err := iter.ComputeStats(keyRange.Start.Key, keyRange.End.Key, nowNanos) 31 if err != nil { 32 return enginepb.MVCCStats{}, err 33 } 34 ms.Add(msDelta) 35 } 36 return ms, nil 37 }