Documentation ¶
Index ¶
- Variables
- func GetMembers(etcdClient *clientv3.Client) ([]*pdpb.Member, error)
- func LogPDInfo()
- func NewTestServer(c *check.C) (*Config, *Server, CleanupFunc)
- func ParseUrls(s string) ([]url.URL, error)
- func PrepareJoinCluster(cfg *Config) error
- func PrintPDInfo()
- func StartMonitor(now func() time.Time, systimeErrHandler func())
- type CleanupFunc
- type ClusterStatus
- type Config
- type Handler
- func (h *Handler) AddAddPeerOperator(regionID uint64, toStoreID uint64) error
- func (h *Handler) AddBalanceLeaderScheduler() error
- func (h *Handler) AddEvictLeaderScheduler(storeID uint64) error
- func (h *Handler) AddGrantLeaderScheduler(storeID uint64) error
- func (h *Handler) AddRemovePeerOperator(regionID uint64, fromStoreID uint64) error
- func (h *Handler) AddScheduler(s schedule.Scheduler, args ...string) error
- func (h *Handler) AddShuffleLeaderScheduler() error
- func (h *Handler) AddShuffleRegionScheduler() error
- func (h *Handler) AddTransferLeaderOperator(regionID uint64, storeID uint64) error
- func (h *Handler) AddTransferPeerOperator(regionID uint64, fromStoreID, toStoreID uint64) error
- func (h *Handler) AddTransferRegionOperator(regionID uint64, storeIDs map[uint64]struct{}) error
- func (h *Handler) GetAdminOperators() ([]*schedule.Operator, error)
- func (h *Handler) GetHistoryOperators() ([]*schedule.Operator, error)
- func (h *Handler) GetHistoryOperatorsOfKind(kind core.ResourceKind) ([]*schedule.Operator, error)
- func (h *Handler) GetHotReadRegions() *core.StoreHotRegionInfos
- func (h *Handler) GetHotReadStores() map[uint64]uint64
- func (h *Handler) GetHotWriteRegions() *core.StoreHotRegionInfos
- func (h *Handler) GetHotWriteStores() map[uint64]uint64
- func (h *Handler) GetLeaderOperators() ([]*schedule.Operator, error)
- func (h *Handler) GetOperator(regionID uint64) (*schedule.Operator, error)
- func (h *Handler) GetOperators() ([]*schedule.Operator, error)
- func (h *Handler) GetOperatorsOfKind(kind core.ResourceKind) ([]*schedule.Operator, error)
- func (h *Handler) GetRegionOperators() ([]*schedule.Operator, error)
- func (h *Handler) GetSchedulers() ([]string, error)
- func (h *Handler) RemoveOperator(regionID uint64) error
- func (h *Handler) RemoveScheduler(name string) error
- type RaftCluster
- func (c *RaftCluster) BuryStore(storeID uint64, force bool) error
- func (c *RaftCluster) GetConfig() *metapb.Cluster
- func (c *RaftCluster) GetNamespaceClassifier() namespace.Classifier
- func (c *RaftCluster) GetRegionByID(regionID uint64) (*metapb.Region, *metapb.Peer)
- func (c *RaftCluster) GetRegionByKey(regionKey []byte) (*metapb.Region, *metapb.Peer)
- func (c *RaftCluster) GetRegionInfoByID(regionID uint64) *core.RegionInfo
- func (c *RaftCluster) GetRegionInfoByKey(regionKey []byte) *core.RegionInfo
- func (c *RaftCluster) GetRegions() []*metapb.Region
- func (c *RaftCluster) GetStore(storeID uint64) (*core.StoreInfo, error)
- func (c *RaftCluster) GetStores() []*metapb.Store
- func (c *RaftCluster) HandleRegionHeartbeat(region *core.RegionInfo) error
- func (c *RaftCluster) RemoveStore(storeID uint64) error
- func (c *RaftCluster) SetStoreState(storeID uint64, state metapb.StoreState) error
- func (c *RaftCluster) SetStoreWeight(storeID uint64, leader, region float64) error
- func (c *RaftCluster) UpdateStoreLabels(storeID uint64, labels []*metapb.StoreLabel) error
- type Replication
- type ReplicationConfig
- type ScheduleConfig
- type SchedulerConfig
- type SchedulerConfigs
- type Server
- func (s *Server) AllocID(ctx context.Context, request *pdpb.AllocIDRequest) (*pdpb.AllocIDResponse, error)
- func (s *Server) AskSplit(ctx context.Context, request *pdpb.AskSplitRequest) (*pdpb.AskSplitResponse, error)
- func (s *Server) Bootstrap(ctx context.Context, request *pdpb.BootstrapRequest) (*pdpb.BootstrapResponse, error)
- func (s *Server) Close()
- func (s *Server) ClusterID() uint64
- func (s *Server) GetAddr() string
- func (s *Server) GetClient() *clientv3.Client
- func (s *Server) GetCluster() *metapb.Cluster
- func (s *Server) GetClusterConfig(ctx context.Context, request *pdpb.GetClusterConfigRequest) (*pdpb.GetClusterConfigResponse, error)
- func (s *Server) GetClusterStatus() (*ClusterStatus, error)
- func (s *Server) GetConfig() *Config
- func (s *Server) GetEndpoints() []string
- func (s *Server) GetHandler() *Handler
- func (s *Server) GetLeader() (*pdpb.Member, error)
- func (s *Server) GetMembers(context.Context, *pdpb.GetMembersRequest) (*pdpb.GetMembersResponse, error)
- func (s *Server) GetRaftCluster() *RaftCluster
- func (s *Server) GetRegion(ctx context.Context, request *pdpb.GetRegionRequest) (*pdpb.GetRegionResponse, error)
- func (s *Server) GetRegionByID(ctx context.Context, request *pdpb.GetRegionByIDRequest) (*pdpb.GetRegionResponse, error)
- func (s *Server) GetReplicationConfig() *ReplicationConfig
- func (s *Server) GetScheduleConfig() *ScheduleConfig
- func (s *Server) GetStore(ctx context.Context, request *pdpb.GetStoreRequest) (*pdpb.GetStoreResponse, error)
- func (s *Server) ID() uint64
- func (s *Server) IsBootstrapped(ctx context.Context, request *pdpb.IsBootstrappedRequest) (*pdpb.IsBootstrappedResponse, error)
- func (s *Server) IsLeader() bool
- func (s *Server) Name() string
- func (s *Server) PutClusterConfig(ctx context.Context, request *pdpb.PutClusterConfigRequest) (*pdpb.PutClusterConfigResponse, error)
- func (s *Server) PutStore(ctx context.Context, request *pdpb.PutStoreRequest) (*pdpb.PutStoreResponse, error)
- func (s *Server) RegionHeartbeat(stream pdpb.PD_RegionHeartbeatServer) error
- func (s *Server) ReportSplit(ctx context.Context, request *pdpb.ReportSplitRequest) (*pdpb.ReportSplitResponse, error)
- func (s *Server) ResignLeader(nextLeader string) error
- func (s *Server) Run() error
- func (s *Server) SetReplicationConfig(cfg ReplicationConfig)
- func (s *Server) SetScheduleConfig(cfg ScheduleConfig)
- func (s *Server) StoreHeartbeat(ctx context.Context, request *pdpb.StoreHeartbeatRequest) (*pdpb.StoreHeartbeatResponse, error)
- func (s *Server) Tso(stream pdpb.PD_TsoServer) error
Constants ¶
This section is empty.
Variables ¶
var ( PDReleaseVersion = "1.0.0" PDBuildTS = "None" PDGitHash = "None" PDGitBranch = "None" )
Version information.
var (
ErrNotBootstrapped = errors.New("TiKV cluster is not bootstrapped, please start TiKV first")
)
Error instances
Functions ¶
func GetMembers ¶
GetMembers return a slice of Members.
func NewTestServer ¶
func NewTestServer(c *check.C) (*Config, *Server, CleanupFunc)
NewTestServer creates a pd server for testing.
func PrepareJoinCluster ¶
PrepareJoinCluster sends MemberAdd command to PD cluster, and returns the initial configuration of the PD cluster.
TL;TR: The join functionality is safe. With data, join does nothing, w/o data
and it is not a member of cluster, join does MemberAdd, it returns an error if PD tries to join itself, missing data or join a duplicated PD.
Etcd automatically re-joins the cluster if there is a data directory. So first it checks if there is a data directory or not. If there is, it returns an empty string (etcd will get the correct configurations from the data directory.)
If there is no data directory, there are following cases:
A new PD joins an existing cluster. What join does: MemberAdd, MemberList, then generate initial-cluster.
A failed PD re-joins the previous cluster. What join does: return an error. (etcd reports: raft log corrupted, truncated, or lost?)
A deleted PD joins to previous cluster. What join does: MemberAdd, MemberList, then generate initial-cluster. (it is not in the member list and there is no data, so we can treat it as a new PD.)
If there is a data directory, there are following special cases:
A failed PD tries to join the previous cluster but it has been deleted during its downtime. What join does: return "" (etcd will connect to other peers and find that the PD itself has been removed.)
A deleted PD joins the previous cluster. What join does: return "" (as etcd will read data directory and find that the PD itself has been removed, so an empty string is fine.)
func PrintPDInfo ¶
func PrintPDInfo()
PrintPDInfo prints the PD version information without log info.
func StartMonitor ¶
StartMonitor calls systimeErrHandler if system time jump backward.
Types ¶
type CleanupFunc ¶
type CleanupFunc func()
CleanupFunc closes test pd server(s) and deletes any files left behind.
type ClusterStatus ¶
ClusterStatus saves some state information
type Config ¶
type Config struct { *flag.FlagSet `json:"-"` Version bool `json:"-"` ClientUrls string `toml:"client-urls" json:"client-urls"` PeerUrls string `toml:"peer-urls" json:"peer-urls"` AdvertiseClientUrls string `toml:"advertise-client-urls" json:"advertise-client-urls"` AdvertisePeerUrls string `toml:"advertise-peer-urls" json:"advertise-peer-urls"` Name string `toml:"name" json:"name"` DataDir string `toml:"data-dir" json:"data-dir"` InitialCluster string `toml:"initial-cluster" json:"initial-cluster"` InitialClusterState string `toml:"initial-cluster-state" json:"initial-cluster-state"` // Join to an existing pd cluster, a string of endpoints. Join string `toml:"join" json:"join"` // LeaderLease time, if leader doesn't update its TTL // in etcd after lease time, etcd will expire the leader key // and other servers can campaign the leader again. // Etcd onlys support seoncds TTL, so here is second too. LeaderLease int64 `toml:"lease" json:"lease"` // Log related config. Log logutil.LogConfig `toml:"log" json:"log"` // Backward compatibility. LogFileDeprecated string `toml:"log-file" json:"log-file"` LogLevelDeprecated string `toml:"log-level" json:"log-level"` // TsoSaveInterval is the interval to save timestamp. TsoSaveInterval typeutil.Duration `toml:"tso-save-interval" json:"tso-save-interval"` Metric metricutil.MetricConfig `toml:"metric" json:"metric"` Schedule ScheduleConfig `toml:"schedule" json:"schedule"` Replication ReplicationConfig `toml:"replication" json:"replication"` // QuotaBackendBytes Raise alarms when backend size exceeds the given quota. 0 means use the default quota. // the default size is 2GB, the maximum is 8GB. QuotaBackendBytes typeutil.ByteSize `toml:"quota-backend-bytes" json:"quota-backend-bytes"` // AutoCompactionRetention for mvcc key value store in hour. 0 means disable auto compaction. // the default retention is 1 hour AutoCompactionRetention int `toml:"auto-compaction-retention" json:"auto-compaction-retention"` // TickInterval is the interval for etcd Raft tick. TickInterval typeutil.Duration `toml:"tick-interval"` // ElectionInterval is the interval for etcd Raft election. ElectionInterval typeutil.Duration `toml:"election-interval"` // For all warnings during parsing. WarningMsgs []string // Enable namespace isolation. EnableNamespace bool `toml:"enable-namespace" json:"enable-namespace"` // contains filtered or unexported fields }
Config is the pd server configuration.
func NewTestMultiConfig ¶
NewTestMultiConfig is only for test to create multiple pd configurations. Because pd-client also needs this, so export here.
func NewTestSingleConfig ¶
func NewTestSingleConfig() *Config
NewTestSingleConfig is only for test to create one pd. Because pd-client also needs this, so export here.
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler is a helper to export methods to handle API/RPC requests.
func (*Handler) AddAddPeerOperator ¶
AddAddPeerOperator adds an operator to add peer.
func (*Handler) AddBalanceLeaderScheduler ¶
AddBalanceLeaderScheduler adds a balance-leader-scheduler.
func (*Handler) AddEvictLeaderScheduler ¶
AddEvictLeaderScheduler adds an evict-leader-scheduler.
func (*Handler) AddGrantLeaderScheduler ¶
AddGrantLeaderScheduler adds a grant-leader-scheduler.
func (*Handler) AddRemovePeerOperator ¶
AddRemovePeerOperator adds an operator to remove peer.
func (*Handler) AddScheduler ¶
AddScheduler adds a scheduler.
func (*Handler) AddShuffleLeaderScheduler ¶
AddShuffleLeaderScheduler adds a shuffle-leader-scheduler.
func (*Handler) AddShuffleRegionScheduler ¶
AddShuffleRegionScheduler adds a shuffle-region-scheduler.
func (*Handler) AddTransferLeaderOperator ¶
AddTransferLeaderOperator adds an operator to transfer leader to the store.
func (*Handler) AddTransferPeerOperator ¶
AddTransferPeerOperator adds an operator to transfer peer.
func (*Handler) AddTransferRegionOperator ¶
AddTransferRegionOperator adds an operator to transfer region to the stores.
func (*Handler) GetAdminOperators ¶
GetAdminOperators returns the running admin operators.
func (*Handler) GetHistoryOperators ¶
GetHistoryOperators returns history operators
func (*Handler) GetHistoryOperatorsOfKind ¶
GetHistoryOperatorsOfKind returns history operators by Kind
func (*Handler) GetHotReadRegions ¶
func (h *Handler) GetHotReadRegions() *core.StoreHotRegionInfos
GetHotReadRegions gets all hot read regions status
func (*Handler) GetHotReadStores ¶
GetHotReadStores gets all hot write stores status
func (*Handler) GetHotWriteRegions ¶
func (h *Handler) GetHotWriteRegions() *core.StoreHotRegionInfos
GetHotWriteRegions gets all hot write regions status
func (*Handler) GetHotWriteStores ¶
GetHotWriteStores gets all hot write stores status
func (*Handler) GetLeaderOperators ¶
GetLeaderOperators returns the running leader operators.
func (*Handler) GetOperator ¶
GetOperator returns the region operator.
func (*Handler) GetOperators ¶
GetOperators returns the running operators.
func (*Handler) GetOperatorsOfKind ¶
GetOperatorsOfKind returns the running operators of the kind.
func (*Handler) GetRegionOperators ¶
GetRegionOperators returns the running region operators.
func (*Handler) GetSchedulers ¶
GetSchedulers returns all names of schedulers.
func (*Handler) RemoveOperator ¶
RemoveOperator removes the region operator.
func (*Handler) RemoveScheduler ¶
RemoveScheduler removes a scheduler by name.
type RaftCluster ¶
RaftCluster is used for cluster config management. Raft cluster key format: cluster 1 -> /1/raft, value is metapb.Cluster cluster 2 -> /2/raft For cluster 1 store 1 -> /1/raft/s/1, value is metapb.Store region 1 -> /1/raft/r/1, value is metapb.Region
func (*RaftCluster) BuryStore ¶
func (c *RaftCluster) BuryStore(storeID uint64, force bool) error
BuryStore marks a store as tombstone in cluster. State transition: Case 1: Up -> Tombstone (if force is true); Case 2: Offline -> Tombstone.
func (*RaftCluster) GetConfig ¶
func (c *RaftCluster) GetConfig() *metapb.Cluster
GetConfig gets config from cluster.
func (*RaftCluster) GetNamespaceClassifier ¶
func (c *RaftCluster) GetNamespaceClassifier() namespace.Classifier
GetNamespaceClassifier returns current namespace classifier.
func (*RaftCluster) GetRegionByID ¶
GetRegionByID gets region and leader peer by regionID from cluster.
func (*RaftCluster) GetRegionByKey ¶
GetRegionByKey gets region and leader peer by region key from cluster.
func (*RaftCluster) GetRegionInfoByID ¶
func (c *RaftCluster) GetRegionInfoByID(regionID uint64) *core.RegionInfo
GetRegionInfoByID gets regionInfo by regionID from cluster.
func (*RaftCluster) GetRegionInfoByKey ¶
func (c *RaftCluster) GetRegionInfoByKey(regionKey []byte) *core.RegionInfo
GetRegionInfoByKey gets regionInfo by region key from cluster.
func (*RaftCluster) GetRegions ¶
func (c *RaftCluster) GetRegions() []*metapb.Region
GetRegions gets regions from cluster.
func (*RaftCluster) GetStore ¶
func (c *RaftCluster) GetStore(storeID uint64) (*core.StoreInfo, error)
GetStore gets store from cluster.
func (*RaftCluster) GetStores ¶
func (c *RaftCluster) GetStores() []*metapb.Store
GetStores gets stores from cluster.
func (*RaftCluster) HandleRegionHeartbeat ¶
func (c *RaftCluster) HandleRegionHeartbeat(region *core.RegionInfo) error
HandleRegionHeartbeat processes RegionInfo reports from client.
func (*RaftCluster) RemoveStore ¶
func (c *RaftCluster) RemoveStore(storeID uint64) error
RemoveStore marks a store as offline in cluster. State transition: Up -> Offline.
func (*RaftCluster) SetStoreState ¶
func (c *RaftCluster) SetStoreState(storeID uint64, state metapb.StoreState) error
SetStoreState sets up a store's state.
func (*RaftCluster) SetStoreWeight ¶
func (c *RaftCluster) SetStoreWeight(storeID uint64, leader, region float64) error
SetStoreWeight sets up a store's leader/region balance weight.
func (*RaftCluster) UpdateStoreLabels ¶
func (c *RaftCluster) UpdateStoreLabels(storeID uint64, labels []*metapb.StoreLabel) error
UpdateStoreLabels updates a store's location labels.
type Replication ¶
type Replication struct {
// contains filtered or unexported fields
}
Replication provides some help to do replication.
func (*Replication) GetLocationLabels ¶
func (r *Replication) GetLocationLabels() []string
GetLocationLabels returns the location labels for each region
func (*Replication) GetMaxReplicas ¶
func (r *Replication) GetMaxReplicas() int
GetMaxReplicas returns the number of replicas for each region.
func (*Replication) SetMaxReplicas ¶
func (r *Replication) SetMaxReplicas(replicas int)
SetMaxReplicas set the replicas for each region.
type ReplicationConfig ¶
type ReplicationConfig struct { // MaxReplicas is the number of replicas for each region. MaxReplicas uint64 `toml:"max-replicas,omitempty" json:"max-replicas"` // The label keys specified the location of a store. // The placement priorities is implied by the order of label keys. // For example, ["zone", "rack"] means that we should place replicas to // different zones first, then to different racks if we don't have enough zones. LocationLabels typeutil.StringSlice `toml:"location-labels,omitempty" json:"location-labels"` }
ReplicationConfig is the replication configuration.
type ScheduleConfig ¶
type ScheduleConfig struct { // If the snapshot count of one store is greater than this value, // it will never be used as a source or target store. MaxSnapshotCount uint64 `toml:"max-snapshot-count,omitempty" json:"max-snapshot-count"` // MaxStoreDownTime is the max duration after which // a store will be considered to be down if it hasn't reported heartbeats. MaxStoreDownTime typeutil.Duration `toml:"max-store-down-time,omitempty" json:"max-store-down-time"` // LeaderScheduleLimit is the max coexist leader schedules. LeaderScheduleLimit uint64 `toml:"leader-schedule-limit,omitempty" json:"leader-schedule-limit"` // RegionScheduleLimit is the max coexist region schedules. RegionScheduleLimit uint64 `toml:"region-schedule-limit,omitempty" json:"region-schedule-limit"` // ReplicaScheduleLimit is the max coexist replica schedules. ReplicaScheduleLimit uint64 `toml:"replica-schedule-limit,omitempty" json:"replica-schedule-limit"` // Schedulers support for loding customized schedulers Schedulers SchedulerConfigs `toml:"schedulers,omitempty" json:"schedulers-v2"` // json v2 is for the sake of compatible upgrade }
ScheduleConfig is the schedule configuration.
type SchedulerConfig ¶
type SchedulerConfig struct { Type string `toml:"type" json:"type"` Args []string `toml:"args,omitempty" json:"args"` }
SchedulerConfig is customized scheduler configuration
type SchedulerConfigs ¶
type SchedulerConfigs []SchedulerConfig
SchedulerConfigs is a slice of customized scheduler configuration.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is the pd server.
func CreateServer ¶
CreateServer creates the UNINITIALIZED pd server with given configuration.
func (*Server) AllocID ¶
func (s *Server) AllocID(ctx context.Context, request *pdpb.AllocIDRequest) (*pdpb.AllocIDResponse, error)
AllocID implements gRPC PDServer.
func (*Server) AskSplit ¶
func (s *Server) AskSplit(ctx context.Context, request *pdpb.AskSplitRequest) (*pdpb.AskSplitResponse, error)
AskSplit implements gRPC PDServer.
func (*Server) Bootstrap ¶
func (s *Server) Bootstrap(ctx context.Context, request *pdpb.BootstrapRequest) (*pdpb.BootstrapResponse, error)
Bootstrap implements gRPC PDServer.
func (*Server) GetClusterConfig ¶
func (s *Server) GetClusterConfig(ctx context.Context, request *pdpb.GetClusterConfigRequest) (*pdpb.GetClusterConfigResponse, error)
GetClusterConfig implements gRPC PDServer.
func (*Server) GetClusterStatus ¶
func (s *Server) GetClusterStatus() (*ClusterStatus, error)
GetClusterStatus gets cluster status
func (*Server) GetEndpoints ¶
GetEndpoints returns the etcd endpoints for outer use.
func (*Server) GetHandler ¶
GetHandler returns the handler for API.
func (*Server) GetMembers ¶
func (s *Server) GetMembers(context.Context, *pdpb.GetMembersRequest) (*pdpb.GetMembersResponse, error)
GetMembers implements gRPC PDServer.
func (*Server) GetRaftCluster ¶
func (s *Server) GetRaftCluster() *RaftCluster
GetRaftCluster gets raft cluster. If cluster has not been bootstrapped, return nil.
func (*Server) GetRegion ¶
func (s *Server) GetRegion(ctx context.Context, request *pdpb.GetRegionRequest) (*pdpb.GetRegionResponse, error)
GetRegion implements gRPC PDServer.
func (*Server) GetRegionByID ¶
func (s *Server) GetRegionByID(ctx context.Context, request *pdpb.GetRegionByIDRequest) (*pdpb.GetRegionResponse, error)
GetRegionByID implements gRPC PDServer.
func (*Server) GetReplicationConfig ¶
func (s *Server) GetReplicationConfig() *ReplicationConfig
GetReplicationConfig get the replication config
func (*Server) GetScheduleConfig ¶
func (s *Server) GetScheduleConfig() *ScheduleConfig
GetScheduleConfig gets the balance config information.
func (*Server) GetStore ¶
func (s *Server) GetStore(ctx context.Context, request *pdpb.GetStoreRequest) (*pdpb.GetStoreResponse, error)
GetStore implements gRPC PDServer.
func (*Server) IsBootstrapped ¶
func (s *Server) IsBootstrapped(ctx context.Context, request *pdpb.IsBootstrappedRequest) (*pdpb.IsBootstrappedResponse, error)
IsBootstrapped implements gRPC PDServer.
func (*Server) PutClusterConfig ¶
func (s *Server) PutClusterConfig(ctx context.Context, request *pdpb.PutClusterConfigRequest) (*pdpb.PutClusterConfigResponse, error)
PutClusterConfig implements gRPC PDServer.
func (*Server) PutStore ¶
func (s *Server) PutStore(ctx context.Context, request *pdpb.PutStoreRequest) (*pdpb.PutStoreResponse, error)
PutStore implements gRPC PDServer.
func (*Server) RegionHeartbeat ¶
func (s *Server) RegionHeartbeat(stream pdpb.PD_RegionHeartbeatServer) error
RegionHeartbeat implements gRPC PDServer.
func (*Server) ReportSplit ¶
func (s *Server) ReportSplit(ctx context.Context, request *pdpb.ReportSplitRequest) (*pdpb.ReportSplitResponse, error)
ReportSplit implements gRPC PDServer.
func (*Server) ResignLeader ¶
ResignLeader resigns current PD's leadership. If nextLeader is empty, all other pd-servers can campaign.
func (*Server) SetReplicationConfig ¶
func (s *Server) SetReplicationConfig(cfg ReplicationConfig)
SetReplicationConfig sets the replication config
func (*Server) SetScheduleConfig ¶
func (s *Server) SetScheduleConfig(cfg ScheduleConfig)
SetScheduleConfig sets the balance config information.
func (*Server) StoreHeartbeat ¶
func (s *Server) StoreHeartbeat(ctx context.Context, request *pdpb.StoreHeartbeatRequest) (*pdpb.StoreHeartbeatResponse, error)
StoreHeartbeat implements gRPC PDServer.