core

package
v3.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2020 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package core defines core characteristics of the server. This file uses the errcode packate to define PD specific error codes. Probably this should be a different package.

Index

Constants

View Source
const (
	// LeaderKind indicates the leader kind resource
	LeaderKind = iota
	// RegionKind indicates the region kind resource
	RegionKind
)
View Source
const EmptyRegionApproximateSize = 1

EmptyRegionApproximateSize is the region approximate size of an empty region (heartbeat size <= 1MB).

Variables

View Source
var (

	// StoreBlockedCode is an error due to requesting an operation that is invalid due to a store being in a blocked state
	StoreBlockedCode = storeStateCode.Child("state.store.blocked")

	// StoreTombstonedCode is an invalid operation was attempted on a store which is in a removed state.
	StoreTombstonedCode = storeStateCode.Child("state.store.tombstoned").SetHTTP(http.StatusGone)
)
View Source
var ErrRegionIsStale = func(region *metapb.Region, origin *metapb.Region) error {
	return errors.Errorf("region is stale: region %v origin %v", region, origin)
}

ErrRegionIsStale is error info for region is stale

Functions

func DiffRegionKeyInfo

func DiffRegionKeyInfo(origin *RegionInfo, other *RegionInfo) string

DiffRegionKeyInfo return the difference of key info between two RegionInfo

func DiffRegionPeersInfo

func DiffRegionPeersInfo(origin *RegionInfo, other *RegionInfo) string

DiffRegionPeersInfo return the difference of peers info between two RegionInfo

func EncodeToString

func EncodeToString(src []byte) []byte

EncodeToString overrides hex.EncodeToString implementation. Difference: returns []byte, not string

func HexRegionKey

func HexRegionKey(key []byte) []byte

HexRegionKey converts region key to hex format. Used for formating region in logs.

func HexRegionKeyStr

func HexRegionKeyStr(key []byte) string

HexRegionKeyStr converts region key to hex format. Used for formating region in logs.

func MergeRegions

func MergeRegions(regions []*metapb.Region) []*metapb.Region

MergeRegions merge a set of metapb.Region by regionKey

func NewRegion

func NewRegion(start, end []byte) *metapb.Region

NewRegion create a metapb.Region

func NewStoreNotFoundErr

func NewStoreNotFoundErr(storeID uint64) errcode.ErrorCode

NewStoreNotFoundErr is for log of store not found

func SplitRegions

func SplitRegions(regions []*metapb.Region) []*metapb.Region

SplitRegions split a set of metapb.Region by the middle of regionKey

func String

func String(b []byte) (s string)

String converts slice of bytes to string without copy.

func ToUpperASCIIInplace

func ToUpperASCIIInplace(s []byte) []byte

ToUpperASCIIInplace bytes.ToUpper but zero-cost

Types

type BasicCluster

type BasicCluster struct {
	Stores  *StoresInfo
	Regions *RegionsInfo
}

BasicCluster provides basic data member and interface for a tikv cluster.

func NewBasicCluster

func NewBasicCluster() *BasicCluster

NewBasicCluster creates a BasicCluster.

func (*BasicCluster) AttachOverloadStatus

func (bc *BasicCluster) AttachOverloadStatus(storeID uint64, f func() bool)

AttachOverloadStatus attaches the overload status to a store.

func (*BasicCluster) BlockStore

func (bc *BasicCluster) BlockStore(storeID uint64) error

BlockStore stops balancer from selecting the store.

func (*BasicCluster) DeleteStore

func (bc *BasicCluster) DeleteStore(store *StoreInfo)

DeleteStore deletes a store

func (*BasicCluster) GetAdjacentRegions

func (bc *BasicCluster) GetAdjacentRegions(region *RegionInfo) (*RegionInfo, *RegionInfo)

GetAdjacentRegions returns region's info that is adjacent with specific region

func (*BasicCluster) GetAverageRegionSize

func (bc *BasicCluster) GetAverageRegionSize() int64

GetAverageRegionSize returns the average region approximate size.

func (*BasicCluster) GetFollowerStores

func (bc *BasicCluster) GetFollowerStores(region *RegionInfo) []*StoreInfo

GetFollowerStores returns all Stores that contains the region's follower peer.

func (*BasicCluster) GetLeaderStore

func (bc *BasicCluster) GetLeaderStore(region *RegionInfo) *StoreInfo

GetLeaderStore returns all Stores that contains the region's leader peer.

func (*BasicCluster) GetRegion

func (bc *BasicCluster) GetRegion(regionID uint64) *RegionInfo

GetRegion searches for a region by ID.

func (*BasicCluster) GetRegionStores

func (bc *BasicCluster) GetRegionStores(region *RegionInfo) []*StoreInfo

GetRegionStores returns all Stores that contains the region's peer.

func (*BasicCluster) GetStore

func (bc *BasicCluster) GetStore(storeID uint64) *StoreInfo

GetStore searches for a store by ID.

func (*BasicCluster) GetStores

func (bc *BasicCluster) GetStores() []*StoreInfo

GetStores returns all Stores in the cluster.

func (*BasicCluster) PreCheckPutRegion

func (bc *BasicCluster) PreCheckPutRegion(region *RegionInfo) (*RegionInfo, error)

PreCheckPutRegion checks if the region is valid to put.

func (*BasicCluster) PutRegion

func (bc *BasicCluster) PutRegion(region *RegionInfo)

PutRegion put a region

func (*BasicCluster) PutStore

func (bc *BasicCluster) PutStore(store *StoreInfo)

PutStore put a store

func (*BasicCluster) RandFollowerRegion

func (bc *BasicCluster) RandFollowerRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandFollowerRegion returns a random region that has a follower on the store.

func (*BasicCluster) RandLeaderRegion

func (bc *BasicCluster) RandLeaderRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandLeaderRegion returns a random region that has leader on the store.

func (*BasicCluster) RandPendingRegion

func (bc *BasicCluster) RandPendingRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandPendingRegion returns a random region that has a pending peer on the store.

func (*BasicCluster) UnblockStore

func (bc *BasicCluster) UnblockStore(storeID uint64)

UnblockStore allows balancer to select the store.

type HexRegionMeta

type HexRegionMeta struct {
	*metapb.Region
}

HexRegionMeta is a region meta in the hex format. Used for formating region in logs.

func RegionToHexMeta

func RegionToHexMeta(meta *metapb.Region) HexRegionMeta

RegionToHexMeta converts a region meta's keys to hex format. Used for formating region in logs.

func (HexRegionMeta) String

func (h HexRegionMeta) String() string

type HexRegionsMeta

type HexRegionsMeta []*metapb.Region

HexRegionsMeta is a slice of regions' meta in the hex format. Used for formating region in logs.

func RegionsToHexMeta

func RegionsToHexMeta(regions []*metapb.Region) HexRegionsMeta

RegionsToHexMeta converts regions' meta keys to hex format. Used for formating region in logs.

func (HexRegionsMeta) String

func (h HexRegionsMeta) String() string

type IDAllocator

type IDAllocator interface {
	Alloc() (uint64, error)
}

IDAllocator is the allocator to generate unique ID.

type KV

type KV struct {
	KVBase
	// contains filtered or unexported fields
}

KV wraps all kv operations, keep it stateless.

func NewKV

func NewKV(base KVBase) *KV

NewKV creates KV instance with KVBase.

func (*KV) Close

func (kv *KV) Close() error

Close closes the kv.

func (*KV) ClusterStatePath

func (kv *KV) ClusterStatePath(option string) string

ClusterStatePath returns the path to save an option.

func (*KV) DeleteRegion

func (kv *KV) DeleteRegion(region *metapb.Region) error

DeleteRegion deletes one region from KV.

func (*KV) DeleteStore

func (kv *KV) DeleteStore(store *metapb.Store) error

DeleteStore deletes one store from KV.

func (*KV) Flush

func (kv *KV) Flush() error

Flush flushes the dirty region to storage.

func (*KV) GetRegionKV

func (kv *KV) GetRegionKV() *RegionKV

GetRegionKV gets the region storage.

func (*KV) LoadConfig

func (kv *KV) LoadConfig(cfg interface{}) (bool, error)

LoadConfig loads config from configPath then unmarshal it to cfg.

func (*KV) LoadGCSafePoint

func (kv *KV) LoadGCSafePoint() (uint64, error)

LoadGCSafePoint loads current GC safe point from KV.

func (*KV) LoadMeta

func (kv *KV) LoadMeta(meta *metapb.Cluster) (bool, error)

LoadMeta loads cluster meta from KV store.

func (*KV) LoadRegion

func (kv *KV) LoadRegion(regionID uint64, region *metapb.Region) (bool, error)

LoadRegion loads one regoin from KV.

func (*KV) LoadRegions

func (kv *KV) LoadRegions(f func(region *RegionInfo) []*metapb.Region) error

LoadRegions loads all regions from KV to RegionsInfo.

func (*KV) LoadStore

func (kv *KV) LoadStore(storeID uint64, store *metapb.Store) (bool, error)

LoadStore loads one store from KV.

func (*KV) LoadStores

func (kv *KV) LoadStores(stores *StoresInfo) error

LoadStores loads all stores from KV to StoresInfo.

func (*KV) SaveConfig

func (kv *KV) SaveConfig(cfg interface{}) error

SaveConfig stores marshalable cfg to the configPath.

func (*KV) SaveGCSafePoint

func (kv *KV) SaveGCSafePoint(safePoint uint64) error

SaveGCSafePoint saves new GC safe point to KV.

func (*KV) SaveMeta

func (kv *KV) SaveMeta(meta *metapb.Cluster) error

SaveMeta save cluster meta to KV store.

func (*KV) SaveRegion

func (kv *KV) SaveRegion(region *metapb.Region) error

SaveRegion saves one region to KV.

func (*KV) SaveStore

func (kv *KV) SaveStore(store *metapb.Store) error

SaveStore saves one store to KV.

func (*KV) SaveStoreWeight

func (kv *KV) SaveStoreWeight(storeID uint64, leader, region float64) error

SaveStoreWeight saves a store's leader and region weight to KV.

func (*KV) SetRegionKV

func (kv *KV) SetRegionKV(regionKV *RegionKV) *KV

SetRegionKV sets the region storage.

func (*KV) SwitchToDefaultStorage

func (kv *KV) SwitchToDefaultStorage()

SwitchToDefaultStorage switches to the to default storage.

func (*KV) SwitchToRegionStorage

func (kv *KV) SwitchToRegionStorage()

SwitchToRegionStorage switches to the region storage.

type KVBase

type KVBase interface {
	Load(key string) (string, error)
	LoadRange(key, endKey string, limit int) (keys []string, values []string, err error)
	Save(key, value string) error
	Delete(key string) error
}

KVBase is an abstract interface for load/save pd cluster data.

func NewMemoryKV

func NewMemoryKV() KVBase

NewMemoryKV returns an in-memory kvBase for testing.

type PriorityLevel

type PriorityLevel int

PriorityLevel lower level means higher priority

const (
	LowPriority PriorityLevel = iota
	NormalPriority
	HighPriority
)

Built-in priority level

type RegionCreateOption

type RegionCreateOption func(region *RegionInfo)

RegionCreateOption used to create region.

func SetApproximateKeys

func SetApproximateKeys(v int64) RegionCreateOption

SetApproximateKeys sets the approximate keys for the region.

func SetApproximateSize

func SetApproximateSize(v int64) RegionCreateOption

SetApproximateSize sets the approximate size for the region.

func SetPeers

func SetPeers(peers []*metapb.Peer) RegionCreateOption

SetPeers sets the peers for the region.

func SetReadBytes

func SetReadBytes(v uint64) RegionCreateOption

SetReadBytes sets the read bytes for the region.

func SetReadKeys

func SetReadKeys(v uint64) RegionCreateOption

SetReadKeys sets the read keys for the region.

func SetRegionConfVer

func SetRegionConfVer(confVer uint64) RegionCreateOption

SetRegionConfVer sets the config version for the reigon.

func SetRegionVersion

func SetRegionVersion(version uint64) RegionCreateOption

SetRegionVersion sets the version for the reigon.

func SetWrittenBytes

func SetWrittenBytes(v uint64) RegionCreateOption

SetWrittenBytes sets the written bytes for the region.

func SetWrittenKeys

func SetWrittenKeys(v uint64) RegionCreateOption

SetWrittenKeys sets the written keys for the region.

func WithAddPeer

func WithAddPeer(peer *metapb.Peer) RegionCreateOption

WithAddPeer adds a peer for the region.

func WithDecConfVer

func WithDecConfVer() RegionCreateOption

WithDecConfVer decreases the config version of the region.

func WithDecVersion

func WithDecVersion() RegionCreateOption

WithDecVersion decreases the version of the region.

func WithDownPeers

func WithDownPeers(downPeers []*pdpb.PeerStats) RegionCreateOption

WithDownPeers sets the down peers for the region.

func WithEndKey

func WithEndKey(key []byte) RegionCreateOption

WithEndKey sets the end key for the region.

func WithIncConfVer

func WithIncConfVer() RegionCreateOption

WithIncConfVer increases the config version of the region.

func WithIncVersion

func WithIncVersion() RegionCreateOption

WithIncVersion increases the version of the region.

func WithLeader

func WithLeader(leader *metapb.Peer) RegionCreateOption

WithLeader sets the leader for the region.

func WithLearners

func WithLearners(learners []*metapb.Peer) RegionCreateOption

WithLearners sets the learners for the region.

func WithNewPeerIds

func WithNewPeerIds(peerIds ...uint64) RegionCreateOption

WithNewPeerIds sets new ids for peers.

func WithNewRegionID

func WithNewRegionID(id uint64) RegionCreateOption

WithNewRegionID sets new id for the region.

func WithPendingPeers

func WithPendingPeers(pengdingPeers []*metapb.Peer) RegionCreateOption

WithPendingPeers sets the pending peers for the region.

func WithPromoteLearner

func WithPromoteLearner(peerID uint64) RegionCreateOption

WithPromoteLearner promotes the learner.

func WithRemoveStorePeer

func WithRemoveStorePeer(storeID uint64) RegionCreateOption

WithRemoveStorePeer removes the specified peer for the region.

func WithStartKey

func WithStartKey(key []byte) RegionCreateOption

WithStartKey sets the start key for the region.

type RegionInfo

type RegionInfo struct {
	// contains filtered or unexported fields
}

RegionInfo records detail region info. Read-Only once created.

func NewRegionInfo

func NewRegionInfo(region *metapb.Region, leader *metapb.Peer, opts ...RegionCreateOption) *RegionInfo

NewRegionInfo creates RegionInfo with region's meta and leader peer.

func RegionFromHeartbeat

func RegionFromHeartbeat(heartbeat *pdpb.RegionHeartbeatRequest) *RegionInfo

RegionFromHeartbeat constructs a Region from region heartbeat.

func (*RegionInfo) Clone

func (r *RegionInfo) Clone(opts ...RegionCreateOption) *RegionInfo

Clone returns a copy of current regionInfo.

func (*RegionInfo) GetApproximateKeys

func (r *RegionInfo) GetApproximateKeys() int64

GetApproximateKeys returns the approximate keys of the region.

func (*RegionInfo) GetApproximateSize

func (r *RegionInfo) GetApproximateSize() int64

GetApproximateSize returns the approximate size of the region.

func (*RegionInfo) GetBytesRead

func (r *RegionInfo) GetBytesRead() uint64

GetBytesRead returns the read bytes of the region.

func (*RegionInfo) GetBytesWritten

func (r *RegionInfo) GetBytesWritten() uint64

GetBytesWritten returns the written bytes of the region.

func (*RegionInfo) GetDiffFollowers

func (r *RegionInfo) GetDiffFollowers(other *RegionInfo) []*metapb.Peer

GetDiffFollowers returns the followers which is not located in the same store as any other followers of the another specified region.

func (*RegionInfo) GetDownLearner

func (r *RegionInfo) GetDownLearner(peerID uint64) *metapb.Peer

GetDownLearner returns the down learner with soecified peer id.

func (*RegionInfo) GetDownPeer

func (r *RegionInfo) GetDownPeer(peerID uint64) *metapb.Peer

GetDownPeer returns the down peer with specified peer id.

func (*RegionInfo) GetDownPeers

func (r *RegionInfo) GetDownPeers() []*pdpb.PeerStats

GetDownPeers returns the down peers of the region.

func (*RegionInfo) GetDownVoter

func (r *RegionInfo) GetDownVoter(peerID uint64) *metapb.Peer

GetDownVoter returns the down voter with specified peer id.

func (*RegionInfo) GetEndKey

func (r *RegionInfo) GetEndKey() []byte

GetEndKey returns the end key of the region.

func (*RegionInfo) GetFollower

func (r *RegionInfo) GetFollower() *metapb.Peer

GetFollower randomly returns a follow peer.

func (*RegionInfo) GetFollowers

func (r *RegionInfo) GetFollowers() map[uint64]*metapb.Peer

GetFollowers returns a map indicate the follow peers distributed.

func (*RegionInfo) GetID

func (r *RegionInfo) GetID() uint64

GetID returns the ID of the region.

func (*RegionInfo) GetKeysRead

func (r *RegionInfo) GetKeysRead() uint64

GetKeysRead returns the read keys of the region.

func (*RegionInfo) GetKeysWritten

func (r *RegionInfo) GetKeysWritten() uint64

GetKeysWritten returns the written keys of the region.

func (*RegionInfo) GetLeader

func (r *RegionInfo) GetLeader() *metapb.Peer

GetLeader returns the leader of the region.

func (*RegionInfo) GetLearners

func (r *RegionInfo) GetLearners() []*metapb.Peer

GetLearners returns the learners.

func (*RegionInfo) GetMeta

func (r *RegionInfo) GetMeta() *metapb.Region

GetMeta returns the meta information of the region.

func (*RegionInfo) GetPeer

func (r *RegionInfo) GetPeer(peerID uint64) *metapb.Peer

GetPeer returns the peer with specified peer id.

func (*RegionInfo) GetPeers

func (r *RegionInfo) GetPeers() []*metapb.Peer

GetPeers returns the peers of the region.

func (*RegionInfo) GetPendingLearner

func (r *RegionInfo) GetPendingLearner(peerID uint64) *metapb.Peer

GetPendingLearner returns the pending learner peer with specified peer id.

func (*RegionInfo) GetPendingPeer

func (r *RegionInfo) GetPendingPeer(peerID uint64) *metapb.Peer

GetPendingPeer returns the pending peer with specified peer id.

func (*RegionInfo) GetPendingPeers

func (r *RegionInfo) GetPendingPeers() []*metapb.Peer

GetPendingPeers returns the pending peers of the region.

func (*RegionInfo) GetPendingVoter

func (r *RegionInfo) GetPendingVoter(peerID uint64) *metapb.Peer

GetPendingVoter returns the pending voter with specified peer id.

func (*RegionInfo) GetRegionEpoch

func (r *RegionInfo) GetRegionEpoch() *metapb.RegionEpoch

GetRegionEpoch returns the region epoch of the region.

func (*RegionInfo) GetStartKey

func (r *RegionInfo) GetStartKey() []byte

GetStartKey returns the start key of the region.

func (*RegionInfo) GetStoreIds

func (r *RegionInfo) GetStoreIds() map[uint64]struct{}

GetStoreIds returns a map indicate the region distributed.

func (*RegionInfo) GetStoreLearner

func (r *RegionInfo) GetStoreLearner(storeID uint64) *metapb.Peer

GetStoreLearner returns the learner peer in specified store.

func (*RegionInfo) GetStorePeer

func (r *RegionInfo) GetStorePeer(storeID uint64) *metapb.Peer

GetStorePeer returns the peer in specified store.

func (*RegionInfo) GetStoreVoter

func (r *RegionInfo) GetStoreVoter(storeID uint64) *metapb.Peer

GetStoreVoter returns the voter in specified store.

func (*RegionInfo) GetVoters

func (r *RegionInfo) GetVoters() []*metapb.Peer

GetVoters returns the voters.

type RegionKV

type RegionKV struct {
	// contains filtered or unexported fields
}

RegionKV is used to save regions.

func NewRegionKV

func NewRegionKV(path string) (*RegionKV, error)

NewRegionKV returns a kv storage that is used to save regions.

func (*RegionKV) Close

func (kv *RegionKV) Close() error

Close closes the kv.

func (RegionKV) Delete

func (kv RegionKV) Delete(key string) error

func (*RegionKV) FlushRegion

func (kv *RegionKV) FlushRegion() error

FlushRegion saves the cache region to region kv storage.

func (RegionKV) Load

func (kv RegionKV) Load(key string) (string, error)

func (RegionKV) LoadRange

func (kv RegionKV) LoadRange(startKey, endKey string, limit int) ([]string, []string, error)

func (RegionKV) Save

func (kv RegionKV) Save(key, value string) error

func (*RegionKV) SaveRegion

func (kv *RegionKV) SaveRegion(region *metapb.Region) error

SaveRegion saves one region to KV.

func (RegionKV) SaveRegions

func (kv RegionKV) SaveRegions(regions map[string]*metapb.Region) error

type RegionOption

type RegionOption func(region *RegionInfo) bool

RegionOption is used to select region.

func HealthRegion

func HealthRegion() RegionOption

HealthRegion checks if the region is healthy.

func HealthRegionAllowPending

func HealthRegionAllowPending() RegionOption

HealthRegionAllowPending checks if the region is healthy with allowing the pending peer.

type RegionsInfo

type RegionsInfo struct {
	// contains filtered or unexported fields
}

RegionsInfo for export

func NewRegionsInfo

func NewRegionsInfo() *RegionsInfo

NewRegionsInfo creates RegionsInfo with tree, regions, leaders and followers

func (*RegionsInfo) AddRegion

func (r *RegionsInfo) AddRegion(region *RegionInfo) []*metapb.Region

AddRegion adds RegionInfo to regionTree and regionMap, also update leaders and followers by region peers

func (*RegionsInfo) GetAdjacentRegions

func (r *RegionsInfo) GetAdjacentRegions(region *RegionInfo) (*RegionInfo, *RegionInfo)

GetAdjacentRegions returns region's info that is adjacent with specific region

func (*RegionsInfo) GetAverageRegionSize

func (r *RegionsInfo) GetAverageRegionSize() int64

GetAverageRegionSize returns the average region approximate size.

func (*RegionsInfo) GetFollower

func (r *RegionsInfo) GetFollower(storeID uint64, regionID uint64) *RegionInfo

GetFollower return follower RegionInfo by storeID and regionID(now only used in test)

func (*RegionsInfo) GetLeader

func (r *RegionsInfo) GetLeader(storeID uint64, regionID uint64) *RegionInfo

GetLeader return leader RegionInfo by storeID and regionID(now only used in test)

func (*RegionsInfo) GetMetaRegions

func (r *RegionsInfo) GetMetaRegions() []*metapb.Region

GetMetaRegions gets a set of metapb.Region from regionMap

func (*RegionsInfo) GetOverlaps

func (r *RegionsInfo) GetOverlaps(region *RegionInfo) []*metapb.Region

GetOverlaps returns the regions which are overlapped with the specified region range.

func (*RegionsInfo) GetRegion

func (r *RegionsInfo) GetRegion(regionID uint64) *RegionInfo

GetRegion returns the RegionInfo with regionID

func (*RegionsInfo) GetRegionCount

func (r *RegionsInfo) GetRegionCount() int

GetRegionCount gets the total count of RegionInfo of regionMap

func (*RegionsInfo) GetRegions

func (r *RegionsInfo) GetRegions() []*RegionInfo

GetRegions gets all RegionInfo from regionMap

func (*RegionsInfo) GetStoreFollowerCount

func (r *RegionsInfo) GetStoreFollowerCount(storeID uint64) int

GetStoreFollowerCount get the total count of a store's follower RegionInfo

func (*RegionsInfo) GetStoreFollowerRegionSize

func (r *RegionsInfo) GetStoreFollowerRegionSize(storeID uint64) int64

GetStoreFollowerRegionSize get total size of store's follower regions

func (*RegionsInfo) GetStoreLeaderCount

func (r *RegionsInfo) GetStoreLeaderCount(storeID uint64) int

GetStoreLeaderCount get the total count of a store's leader RegionInfo

func (*RegionsInfo) GetStoreLeaderRegionSize

func (r *RegionsInfo) GetStoreLeaderRegionSize(storeID uint64) int64

GetStoreLeaderRegionSize get total size of store's leader regions

func (*RegionsInfo) GetStoreLearnerCount

func (r *RegionsInfo) GetStoreLearnerCount(storeID uint64) int

GetStoreLearnerCount get the total count of a store's learner RegionInfo

func (*RegionsInfo) GetStoreLearnerRegionSize

func (r *RegionsInfo) GetStoreLearnerRegionSize(storeID uint64) int64

GetStoreLearnerRegionSize get total size of store's learner regions

func (*RegionsInfo) GetStorePendingPeerCount

func (r *RegionsInfo) GetStorePendingPeerCount(storeID uint64) int

GetStorePendingPeerCount gets the total count of a store's region that includes pending peer

func (*RegionsInfo) GetStoreRegionCount

func (r *RegionsInfo) GetStoreRegionCount(storeID uint64) int

GetStoreRegionCount gets the total count of a store's leader and follower RegionInfo by storeID

func (*RegionsInfo) GetStoreRegionSize

func (r *RegionsInfo) GetStoreRegionSize(storeID uint64) int64

GetStoreRegionSize get total size of store's regions

func (*RegionsInfo) GetStoreRegions

func (r *RegionsInfo) GetStoreRegions(storeID uint64) []*RegionInfo

GetStoreRegions gets all RegionInfo with a given storeID

func (*RegionsInfo) Length

func (r *RegionsInfo) Length() int

Length returns the RegionsInfo length

func (*RegionsInfo) RandFollowerRegion

func (r *RegionsInfo) RandFollowerRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandFollowerRegion randomly gets a store's follower region.

func (*RegionsInfo) RandLeaderRegion

func (r *RegionsInfo) RandLeaderRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandLeaderRegion randomly gets a store's leader region.

func (*RegionsInfo) RandPendingRegion

func (r *RegionsInfo) RandPendingRegion(storeID uint64, opts ...RegionOption) *RegionInfo

RandPendingRegion randomly gets a store's region with a pending peer.

func (*RegionsInfo) RandRegion

func (r *RegionsInfo) RandRegion(opts ...RegionOption) *RegionInfo

RandRegion get a region by random

func (*RegionsInfo) RemoveRegion

func (r *RegionsInfo) RemoveRegion(region *RegionInfo)

RemoveRegion removes RegionInfo from regionTree and regionMap

func (*RegionsInfo) ScanRange

func (r *RegionsInfo) ScanRange(startKey []byte, limit int) []*RegionInfo

ScanRange scans from the first region containing or behind start key, until number greater than limit.

func (*RegionsInfo) ScanRangeWithEndKey

func (r *RegionsInfo) ScanRangeWithEndKey(startKey, endKey []byte) []*RegionInfo

ScanRangeWithEndKey scans regions intersecting [start key, end key).

func (*RegionsInfo) ScanRangeWithIterator

func (r *RegionsInfo) ScanRangeWithIterator(startKey []byte, iterator func(metaRegion *metapb.Region) bool)

ScanRangeWithIterator scans from the first region containing or behind start key, until iterator returns false.

func (*RegionsInfo) SearchPrevRegion

func (r *RegionsInfo) SearchPrevRegion(regionKey []byte) *RegionInfo

SearchPrevRegion searches previous RegionInfo from regionTree

func (*RegionsInfo) SearchRegion

func (r *RegionsInfo) SearchRegion(regionKey []byte) *RegionInfo

SearchRegion searches RegionInfo from regionTree

func (*RegionsInfo) SetRegion

func (r *RegionsInfo) SetRegion(region *RegionInfo) []*metapb.Region

SetRegion sets the RegionInfo with regionID

func (*RegionsInfo) TreeLength

func (r *RegionsInfo) TreeLength() int

TreeLength returns the RegionsInfo tree length(now only used in test)

type ResourceKind

type ResourceKind int

ResourceKind distinguishes different kinds of resources.

func (ResourceKind) String

func (k ResourceKind) String() string

type StoreBlockedErr

type StoreBlockedErr StoreErr

StoreBlockedErr has a Code() of StoreBlockedCode

func (StoreBlockedErr) Code

func (e StoreBlockedErr) Code() errcode.Code

Code returns StoreBlockedCode

func (StoreBlockedErr) Error

func (e StoreBlockedErr) Error() string

type StoreCreateOption

type StoreCreateOption func(region *StoreInfo)

StoreCreateOption is used to create store.

func SetLastHeartbeatTS

func SetLastHeartbeatTS(lastHeartbeatTS time.Time) StoreCreateOption

SetLastHeartbeatTS sets the time of last heartbeat for the store.

func SetLeaderCount

func SetLeaderCount(leaderCount int) StoreCreateOption

SetLeaderCount sets the leader count for the store.

func SetLeaderSize

func SetLeaderSize(leaderSize int64) StoreCreateOption

SetLeaderSize sets the leader size for the store.

func SetLeaderWeight

func SetLeaderWeight(leaderWeight float64) StoreCreateOption

SetLeaderWeight sets the leader weight for the store.

func SetOverloadStatus

func SetOverloadStatus(f func() bool) StoreCreateOption

SetOverloadStatus sets the overload status for the store.

func SetPendingPeerCount

func SetPendingPeerCount(pendingPeerCount int) StoreCreateOption

SetPendingPeerCount sets the pending peer count for the store.

func SetRegionCount

func SetRegionCount(regionCount int) StoreCreateOption

SetRegionCount sets the Region count for the store.

func SetRegionSize

func SetRegionSize(regionSize int64) StoreCreateOption

SetRegionSize sets the Region size for the store.

func SetRegionWeight

func SetRegionWeight(regionWeight float64) StoreCreateOption

SetRegionWeight sets the Region weight for the store.

func SetStoreAddress

func SetStoreAddress(address string) StoreCreateOption

SetStoreAddress sets the address for the store.

func SetStoreBlock

func SetStoreBlock() StoreCreateOption

SetStoreBlock stops balancer from selecting the store.

func SetStoreLabels

func SetStoreLabels(labels []*metapb.StoreLabel) StoreCreateOption

SetStoreLabels sets the labels for the store.

func SetStoreState

func SetStoreState(state metapb.StoreState) StoreCreateOption

SetStoreState sets the state for the store.

func SetStoreStats

func SetStoreStats(stats *pdpb.StoreStats) StoreCreateOption

SetStoreStats sets the statistics information for the store.

func SetStoreUnBlock

func SetStoreUnBlock() StoreCreateOption

SetStoreUnBlock allows balancer to select the store.

func SetStoreVersion

func SetStoreVersion(version string) StoreCreateOption

SetStoreVersion sets the version for the store.

type StoreErr

type StoreErr struct {
	StoreID uint64 `json:"storeId"`
}

StoreErr can be newtyped or embedded in your own error

type StoreInfo

type StoreInfo struct {
	// contains filtered or unexported fields
}

StoreInfo contains information about a store.

func NewStoreInfo

func NewStoreInfo(store *metapb.Store, opts ...StoreCreateOption) *StoreInfo

NewStoreInfo creates StoreInfo with meta data.

func (*StoreInfo) AvailableRatio

func (s *StoreInfo) AvailableRatio() float64

AvailableRatio is store's freeSpace/capacity.

func (*StoreInfo) Clone

func (s *StoreInfo) Clone(opts ...StoreCreateOption) *StoreInfo

Clone creates a copy of current StoreInfo.

func (*StoreInfo) CompareLocation

func (s *StoreInfo) CompareLocation(other *StoreInfo, labels []string) int

CompareLocation compares 2 stores' labels and returns at which level their locations are different. It returns -1 if they are at the same location.

func (*StoreInfo) DownTime

func (s *StoreInfo) DownTime() time.Duration

DownTime returns the time elapsed since last heartbeat.

func (*StoreInfo) GetAddress

func (s *StoreInfo) GetAddress() string

GetAddress returns the address of the store.

func (*StoreInfo) GetApplyingSnapCount

func (s *StoreInfo) GetApplyingSnapCount() uint32

GetApplyingSnapCount returns the current applying snapshot count of the store.

func (*StoreInfo) GetAvailable

func (s *StoreInfo) GetAvailable() uint64

GetAvailable returns the available size of the store.

func (*StoreInfo) GetBytesRead

func (s *StoreInfo) GetBytesRead() uint64

GetBytesRead returns the bytes read for the store during this period.

func (*StoreInfo) GetBytesWritten

func (s *StoreInfo) GetBytesWritten() uint64

GetBytesWritten returns the bytes written for the store during this period.

func (*StoreInfo) GetCapacity

func (s *StoreInfo) GetCapacity() uint64

GetCapacity returns the capacity size of the store.

func (*StoreInfo) GetID

func (s *StoreInfo) GetID() uint64

GetID returns the ID of the store.

func (*StoreInfo) GetIsBusy

func (s *StoreInfo) GetIsBusy() bool

GetIsBusy returns if the store is busy.

func (*StoreInfo) GetKeysRead

func (s *StoreInfo) GetKeysRead() uint64

GetKeysRead returns the keys read for the store during this period.

func (*StoreInfo) GetKeysWritten

func (s *StoreInfo) GetKeysWritten() uint64

GetKeysWritten returns the keys written for the store during this period.

func (*StoreInfo) GetLabelValue

func (s *StoreInfo) GetLabelValue(key string) string

GetLabelValue returns a label's value (if exists).

func (*StoreInfo) GetLabels

func (s *StoreInfo) GetLabels() []*metapb.StoreLabel

GetLabels returns the labels of the store.

func (*StoreInfo) GetLastHeartbeatTS

func (s *StoreInfo) GetLastHeartbeatTS() time.Time

GetLastHeartbeatTS returns the last heartbeat timestamp of the store.

func (*StoreInfo) GetLeaderCount

func (s *StoreInfo) GetLeaderCount() int

GetLeaderCount returns the leader count of the store.

func (*StoreInfo) GetLeaderSize

func (s *StoreInfo) GetLeaderSize() int64

GetLeaderSize returns the leader size of the store.

func (*StoreInfo) GetLeaderWeight

func (s *StoreInfo) GetLeaderWeight() float64

GetLeaderWeight returns the leader weight of the store.

func (*StoreInfo) GetMeta

func (s *StoreInfo) GetMeta() *metapb.Store

GetMeta returns the meta information of the store.

func (*StoreInfo) GetPendingPeerCount

func (s *StoreInfo) GetPendingPeerCount() int

GetPendingPeerCount returns the pending peer count of the store.

func (*StoreInfo) GetReceivingSnapCount

func (s *StoreInfo) GetReceivingSnapCount() uint32

GetReceivingSnapCount returns the current receiving snapshot count of the store.

func (*StoreInfo) GetRegionCount

func (s *StoreInfo) GetRegionCount() int

GetRegionCount returns the Region count of the store.

func (*StoreInfo) GetRegionSize

func (s *StoreInfo) GetRegionSize() int64

GetRegionSize returns the Region size of the store.

func (*StoreInfo) GetRegionWeight

func (s *StoreInfo) GetRegionWeight() float64

GetRegionWeight returns the Region weight of the store.

func (*StoreInfo) GetSendingSnapCount

func (s *StoreInfo) GetSendingSnapCount() uint32

GetSendingSnapCount returns the current sending snapshot count of the store.

func (*StoreInfo) GetStartTS

func (s *StoreInfo) GetStartTS() time.Time

GetStartTS returns the start timestamp.

func (*StoreInfo) GetStartTime

func (s *StoreInfo) GetStartTime() uint32

GetStartTime returns the start time of the store.

func (*StoreInfo) GetState

func (s *StoreInfo) GetState() metapb.StoreState

GetState returns the state of the store.

func (*StoreInfo) GetStoreStats

func (s *StoreInfo) GetStoreStats() *pdpb.StoreStats

GetStoreStats returns the statistics information of the store.

func (*StoreInfo) GetUptime

func (s *StoreInfo) GetUptime() time.Duration

GetUptime returns the uptime.

func (*StoreInfo) GetUsedSize

func (s *StoreInfo) GetUsedSize() uint64

GetUsedSize returns the used size of the store.

func (*StoreInfo) GetVersion

func (s *StoreInfo) GetVersion() string

GetVersion returns the version of the store.

func (*StoreInfo) IsBlocked

func (s *StoreInfo) IsBlocked() bool

IsBlocked returns if the store is blocked.

func (*StoreInfo) IsDisconnected

func (s *StoreInfo) IsDisconnected() bool

IsDisconnected checks if a store is disconnected, which means PD misses tikv's store heartbeat for a short time, maybe caused by process restart or temporary network failure.

func (*StoreInfo) IsLowSpace

func (s *StoreInfo) IsLowSpace(lowSpaceRatio float64) bool

IsLowSpace checks if the store is lack of space.

func (*StoreInfo) IsOffline

func (s *StoreInfo) IsOffline() bool

IsOffline checks if the store's state is Offline.

func (*StoreInfo) IsOverloaded

func (s *StoreInfo) IsOverloaded() bool

IsOverloaded returns if the store is overloaded.

func (*StoreInfo) IsTombstone

func (s *StoreInfo) IsTombstone() bool

IsTombstone checks if the store's state is Tombstone.

func (*StoreInfo) IsUnhealth

func (s *StoreInfo) IsUnhealth() bool

IsUnhealth checks if a store is unhealth.

func (*StoreInfo) IsUp

func (s *StoreInfo) IsUp() bool

IsUp checks if the store's state is Up.

func (*StoreInfo) LeaderScore

func (s *StoreInfo) LeaderScore(delta int64) float64

LeaderScore returns the store's leader score: leaderSize / leaderWeight.

func (*StoreInfo) MergeLabels

func (s *StoreInfo) MergeLabels(labels []*metapb.StoreLabel) []*metapb.StoreLabel

MergeLabels merges the passed in labels with origins, overriding duplicated ones.

func (*StoreInfo) RegionScore

func (s *StoreInfo) RegionScore(highSpaceRatio, lowSpaceRatio float64, delta int64) float64

RegionScore returns the store's region score.

func (*StoreInfo) ResourceCount

func (s *StoreInfo) ResourceCount(kind ResourceKind) uint64

ResourceCount reutrns count of leader/region in the store.

func (*StoreInfo) ResourceScore

func (s *StoreInfo) ResourceScore(kind ResourceKind, highSpaceRatio, lowSpaceRatio float64, delta int64) float64

ResourceScore reutrns score of leader/region in the store.

func (*StoreInfo) ResourceSize

func (s *StoreInfo) ResourceSize(kind ResourceKind) int64

ResourceSize returns size of leader/region in the store

func (*StoreInfo) ResourceWeight

func (s *StoreInfo) ResourceWeight(kind ResourceKind) float64

ResourceWeight returns weight of leader/region in the score

func (*StoreInfo) StorageSize

func (s *StoreInfo) StorageSize() uint64

StorageSize returns store's used storage size reported from tikv.

type StoreTombstonedErr

type StoreTombstonedErr StoreErr

StoreTombstonedErr is an invalid operation was attempted on a store which is in a removed state.

func (StoreTombstonedErr) Code

func (e StoreTombstonedErr) Code() errcode.Code

Code returns StoreTombstonedCode

func (StoreTombstonedErr) Error

func (e StoreTombstonedErr) Error() string

type StoresInfo

type StoresInfo struct {
	// contains filtered or unexported fields
}

StoresInfo contains information about all stores.

func NewStoresInfo

func NewStoresInfo() *StoresInfo

NewStoresInfo create a StoresInfo with map of storeID to StoreInfo

func (*StoresInfo) AttachOverloadStatus

func (s *StoresInfo) AttachOverloadStatus(storeID uint64, f func() bool)

AttachOverloadStatus attaches the overload status to a store.

func (*StoresInfo) BlockStore

func (s *StoresInfo) BlockStore(storeID uint64) errcode.ErrorCode

BlockStore blocks a StoreInfo with storeID.

func (*StoresInfo) DeleteStore

func (s *StoresInfo) DeleteStore(store *StoreInfo)

DeleteStore deletes tombstone record form store

func (*StoresInfo) GetMetaStores

func (s *StoresInfo) GetMetaStores() []*metapb.Store

GetMetaStores gets a complete set of metapb.Store.

func (*StoresInfo) GetStore

func (s *StoresInfo) GetStore(storeID uint64) *StoreInfo

GetStore returns a copy of the StoreInfo with the specified storeID.

func (*StoresInfo) GetStoreCount

func (s *StoresInfo) GetStoreCount() int

GetStoreCount returns the total count of storeInfo.

func (*StoresInfo) GetStores

func (s *StoresInfo) GetStores() []*StoreInfo

GetStores gets a complete set of StoreInfo.

func (*StoresInfo) SetLeaderCount

func (s *StoresInfo) SetLeaderCount(storeID uint64, leaderCount int)

SetLeaderCount sets the leader count to a storeInfo.

func (*StoresInfo) SetLeaderSize

func (s *StoresInfo) SetLeaderSize(storeID uint64, leaderSize int64)

SetLeaderSize sets the leader size to a storeInfo.

func (*StoresInfo) SetPendingPeerCount

func (s *StoresInfo) SetPendingPeerCount(storeID uint64, pendingPeerCount int)

SetPendingPeerCount sets the pending count to a storeInfo.

func (*StoresInfo) SetRegionCount

func (s *StoresInfo) SetRegionCount(storeID uint64, regionCount int)

SetRegionCount sets the region count to a storeInfo.

func (*StoresInfo) SetRegionSize

func (s *StoresInfo) SetRegionSize(storeID uint64, regionSize int64)

SetRegionSize sets the region size to a storeInfo.

func (*StoresInfo) SetStore

func (s *StoresInfo) SetStore(store *StoreInfo)

SetStore sets a StoreInfo with storeID.

func (*StoresInfo) TakeStore

func (s *StoresInfo) TakeStore(storeID uint64) *StoreInfo

TakeStore returns the point of the origin StoreInfo with the specified storeID.

func (*StoresInfo) UnblockStore

func (s *StoresInfo) UnblockStore(storeID uint64)

UnblockStore unblocks a StoreInfo with storeID.

func (*StoresInfo) UpdateStoreStatusLocked

func (s *StoresInfo) UpdateStoreStatusLocked(storeID uint64, leaderCount int, regionCount int, pendingPeerCount int, leaderSize int64, regionSize int64)

UpdateStoreStatusLocked updates the information of the store.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL