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  }