Documentation
¶
Index ¶
- Constants
- Variables
- func AddResourceGroup(ctx context.Context, group *rmpb.ResourceGroup) error
- func CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pdhttp.StoreInfo) (float64, error)
- func CheckBundle(bundle *placement.Bundle) error
- func CleanTiFlashProgressCache()
- func CloseTiFlashManager(ctx context.Context)
- func ConfigureTiFlashPDForPartitions(accel bool, definitions *[]model.PartitionDefinition, count uint64, ...) error
- func ConfigureTiFlashPDForTable(id int64, count uint64, locationLabels *[]string) error
- func ContainsInternalSessionForTest(se any) bool
- func DeleteInternalSession(se any)
- func DeleteResourceGroup(ctx context.Context, name string) error
- func DeleteTiFlashPlacementRules(ctx context.Context, physicalTableIDs []int64) error
- func DeleteTiFlashTableSyncProgress(tableInfo *model.TableInfo) error
- func GetAllLabelRules(ctx context.Context) ([]*label.Rule, error)
- func GetAllRuleBundles(ctx context.Context) ([]*placement.Bundle, error)
- func GetAllServerInfo(ctx context.Context) (map[string]*ServerInfo, error)
- func GetEtcdClient() *clientv3.Client
- func GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error)
- func GetPDScheduleConfig(ctx context.Context) (map[string]any, error)
- func GetPrometheusAddr() (string, error)
- func GetResourceGroup(ctx context.Context, name string) (*rmpb.ResourceGroup, error)
- func GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error)
- func GetTiFlashGroupRules(ctx context.Context, group string) ([]*pdhttp.Rule, error)
- func GetTiFlashProgressFromCache(tableID int64) (float64, bool)
- func GetTiFlashRegionCountFromPD(ctx context.Context, tableID int64, regionCount *int) error
- func GetTiFlashStoresStat(ctx context.Context) (*pdhttp.StoresInfo, error)
- func GetTiProxyServerInfo(ctx context.Context) (map[string]*TiProxyServerInfo, error)
- func ListResourceGroups(ctx context.Context) ([]*rmpb.ResourceGroup, error)
- func MakeNewRule(id int64, count uint64, locationLabels []string) pd.Rule
- func MakeRuleID(id int64) string
- func ModifyResourceGroup(ctx context.Context, group *rmpb.ResourceGroup) error
- func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *map[int64]pdhttp.StoreInfo) (float64, error)
- func NewMockResourceManagerClient() pd.ResourceManagerClient
- func PutLabelRule(ctx context.Context, rule *label.Rule) error
- func PutRuleBundles(ctx context.Context, bundles []*placement.Bundle) error
- func PutRuleBundlesWithDefaultRetry(ctx context.Context, bundles []*placement.Bundle) (err error)
- func PutRuleBundlesWithRetry(ctx context.Context, bundles []*placement.Bundle, maxRetry int, ...) (err error)
- func SetEtcdClient(etcdCli *clientv3.Client)
- func SetMockTiFlash(tiflash *MockTiFlash)
- func SetPDHttpCliForTest(cli pdhttp.Client) func()
- func SetPDScheduleConfig(ctx context.Context, config map[string]any) error
- func SetTiFlashGroupConfig(ctx context.Context) error
- func SetTiFlashPlacementRule(ctx context.Context, rule pdhttp.Rule) error
- func StoreInternalSession(se any) bool
- func SyncTiFlashTableSchema(ctx context.Context, tableID int64) error
- func UpdateLabelRules(ctx context.Context, patch *pdhttp.LabelRulePatch) error
- func UpdateServerLabel(ctx context.Context, labels map[string]string) error
- func UpdateTiFlashProgressCache(tableID int64, progress float64) error
- type DynamicServerInfo
- type InfoSyncer
- func (is *InfoSyncer) Done() <-chan struct{}
- func (is *InfoSyncer) GetAllTiDBTopology(ctx context.Context) ([]*TopologyInfo, error)
- func (is *InfoSyncer) GetMinStartTS() uint64
- func (is *InfoSyncer) GetSessionManager() util2.SessionManager
- func (is *InfoSyncer) RemoveMinStartTS()
- func (is *InfoSyncer) RemoveServerInfo()
- func (is *InfoSyncer) ReportMinStartTS(store kv.Storage)
- func (is *InfoSyncer) Restart(ctx context.Context) error
- func (is *InfoSyncer) RestartTopology(ctx context.Context) error
- func (is *InfoSyncer) SetSessionManager(manager util2.SessionManager)
- func (is *InfoSyncer) StoreServerInfo(ctx context.Context) error
- func (is *InfoSyncer) StoreTopologyInfo(ctx context.Context) error
- func (is *InfoSyncer) TopologyDone() <-chan struct{}
- type LabelRuleManager
- type MockGlobalServerInfoManager
- func (m *MockGlobalServerInfoManager) Add(id string, serverIDGetter func() uint64)
- func (m *MockGlobalServerInfoManager) Close()
- func (m *MockGlobalServerInfoManager) Delete(idx int) error
- func (m *MockGlobalServerInfoManager) DeleteByExecID(execID string)
- func (m *MockGlobalServerInfoManager) GetAllServerInfo() map[string]*ServerInfo
- type MockTiFlash
- func (tiflash *MockTiFlash) AddStore(storeID uint64, address string)
- func (tiflash *MockTiFlash) CheckPlacementRule(rule pd.Rule) bool
- func (tiflash *MockTiFlash) CleanPlacementRules()
- func (tiflash *MockTiFlash) GetPlacementRule(ruleName string) (*pd.Rule, bool)
- func (tiflash *MockTiFlash) GetRuleGroupIndex() int
- func (tiflash *MockTiFlash) GetTableSyncStatus(tableID int) (*mockTiFlashTableInfo, bool)
- func (tiflash *MockTiFlash) HandleDeletePlacementRule(_ string, ruleID string)
- func (tiflash *MockTiFlash) HandleGetGroupRules(_ string) ([]*pd.Rule, error)
- func (*MockTiFlash) HandleGetPDRegionRecordStats(int64) pd.RegionStats
- func (tiflash *MockTiFlash) HandleGetStoresStat() *pd.StoresInfo
- func (tiflash *MockTiFlash) HandlePostAccelerateSchedule(endKey string) error
- func (tiflash *MockTiFlash) HandleSetPlacementRule(rule *pd.Rule) error
- func (tiflash *MockTiFlash) HandleSetPlacementRuleBatch(rules []*pd.Rule) error
- func (tiflash *MockTiFlash) PdSwitch(enabled bool)
- func (tiflash *MockTiFlash) PlacementRulesLen() int
- func (tiflash *MockTiFlash) ResetSyncStatus(tableID int, canAvailable bool)
- func (tiflash *MockTiFlash) SetNetworkError(e bool)
- func (tiflash *MockTiFlash) SetRuleGroupIndex(groupIndex int)
- type MockTiFlashError
- type PDLabelManager
- func (lm *PDLabelManager) GetAllLabelRules(ctx context.Context) ([]*label.Rule, error)
- func (lm *PDLabelManager) GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error)
- func (lm *PDLabelManager) PutLabelRule(ctx context.Context, rule *label.Rule) error
- func (lm *PDLabelManager) UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error
- type PDPlacementManager
- func (m *PDPlacementManager) GetAllRuleBundles(ctx context.Context) ([]*placement.Bundle, error)
- func (m *PDPlacementManager) GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error)
- func (m *PDPlacementManager) PutRuleBundles(ctx context.Context, bundles []*placement.Bundle) error
- type PDScheduleManager
- type PlacementManager
- type PlacementScheduleState
- type ScheduleManager
- type ServerInfo
- type ServerVersionInfo
- type StaticServerInfo
- type TiCDCInfo
- type TiFlashReplicaManager
- type TiFlashReplicaManagerCtx
- func (m *TiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pd.StoreInfo) (float64, error)
- func (m *TiFlashReplicaManagerCtx) CleanTiFlashProgressCache()
- func (*TiFlashReplicaManagerCtx) Close(context.Context)
- func (m *TiFlashReplicaManagerCtx) DeletePlacementRule(ctx context.Context, group string, ruleID string) error
- func (m *TiFlashReplicaManagerCtx) DeleteTiFlashProgressFromCache(tableID int64)
- func (m *TiFlashReplicaManagerCtx) GetGroupRules(ctx context.Context, group string) ([]*pd.Rule, error)
- func (m *TiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, tableID int64, regionCount *int) error
- func (m *TiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*pd.StoresInfo, error)
- func (m *TiFlashReplicaManagerCtx) GetTiFlashProgressFromCache(tableID int64) (float64, bool)
- func (m *TiFlashReplicaManagerCtx) PostAccelerateScheduleBatch(ctx context.Context, tableIDs []int64) error
- func (m *TiFlashReplicaManagerCtx) SetPlacementRule(ctx context.Context, rule *pd.Rule) error
- func (m *TiFlashReplicaManagerCtx) SetPlacementRuleBatch(ctx context.Context, rules []*pd.Rule) error
- func (m *TiFlashReplicaManagerCtx) SetTiFlashGroupConfig(ctx context.Context) error
- func (m *TiFlashReplicaManagerCtx) SyncTiFlashTableSchema(tableID int64, tiFlashStores []pd.StoreInfo) error
- func (m *TiFlashReplicaManagerCtx) UpdateTiFlashProgressCache(tableID int64, progress float64)
- type TiProxyServerInfo
- type TopologyInfo
Constants ¶
const ( // ServerInformationPath store server information such as IP, port and so on. ServerInformationPath = "/tidb/server/info" // ServerMinStartTSPath store the server min start timestamp. ServerMinStartTSPath = "/tidb/server/minstartts" // TiFlashTableSyncProgressPath store the tiflash table replica sync progress. TiFlashTableSyncProgressPath = "/tiflash/table/sync" // ReportInterval is interval of infoSyncerKeeper reporting min startTS. ReportInterval = 30 * time.Second // TopologyInformationPath means etcd path for storing topology info. TopologyInformationPath = "/topology/tidb" // TopologySessionTTL is ttl for topology, ant it's the ETCD session's TTL in seconds. TopologySessionTTL = 45 // TopologyTimeToRefresh means time to refresh etcd. TopologyTimeToRefresh = 30 * time.Second // TopologyPrometheus means address of prometheus. TopologyPrometheus = "/topology/prometheus" // TopologyTiProxy means address of TiProxy. TopologyTiProxy = "/topology/tiproxy" // TopologyTiCDC means address of TiCDC. TopologyTiCDC = "/topology/ticdc" // TablePrometheusCacheExpiry is the expiry time for prometheus address cache. TablePrometheusCacheExpiry = 10 * time.Second // RequestRetryInterval is the sleep time before next retry for http request RequestRetryInterval = 200 * time.Millisecond // SyncBundlesMaxRetry is the max retry times for sync placement bundles SyncBundlesMaxRetry = 3 )
Variables ¶
var ( // ErrHTTPServiceError means we got a http response with a status code which is not '2xx' ErrHTTPServiceError = dbterror.ClassDomain.NewStd(errno.ErrHTTPServiceError) )
var ErrPrometheusAddrIsNotSet = dbterror.ClassDomain.NewStd(errno.ErrPrometheusAddrIsNotSet)
ErrPrometheusAddrIsNotSet is the error that Prometheus address is not set in PD and etcd
var MockGlobalServerInfoManagerEntry = &MockGlobalServerInfoManager{
mockServerPort: 4000,
}
MockGlobalServerInfoManagerEntry is a mock global ServerInfoManager entry.
Functions ¶
func AddResourceGroup ¶
func AddResourceGroup(ctx context.Context, group *rmpb.ResourceGroup) error
AddResourceGroup is used to create one specific resource group to resource manager.
func CalculateTiFlashProgress ¶
func CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pdhttp.StoreInfo) (float64, error)
CalculateTiFlashProgress calculates TiFlash replica progress
func CheckBundle ¶
CheckBundle check that the rules don't overlap without explicit Override Exported for testing reasons. Tries to be a simpler version of PDs prepareRulesForApply + checkApplyRules. And additionally checks for key overlaps.
func CleanTiFlashProgressCache ¶
func CleanTiFlashProgressCache()
CleanTiFlashProgressCache clean progress cache
func CloseTiFlashManager ¶
CloseTiFlashManager closes TiFlash manager.
func ConfigureTiFlashPDForPartitions ¶
func ConfigureTiFlashPDForPartitions(accel bool, definitions *[]model.PartitionDefinition, count uint64, locationLabels *[]string, tableID int64) error
ConfigureTiFlashPDForPartitions configures pd rule for all partition in partitioned tables.
func ConfigureTiFlashPDForTable ¶
ConfigureTiFlashPDForTable configures pd rule for unpartitioned tables.
func ContainsInternalSessionForTest ¶
ContainsInternalSessionForTest is the entry function for check whether an internal session is in SessionManager. It is only used for test.
func DeleteInternalSession ¶
func DeleteInternalSession(se any)
DeleteInternalSession is the entry function for delete an internal session from SessionManager.
func DeleteResourceGroup ¶
DeleteResourceGroup is used to delete one specific resource group from resource manager.
func DeleteTiFlashPlacementRules ¶
DeleteTiFlashPlacementRules is a helper function to delete TiFlash placement rules of given physical table IDs.
func DeleteTiFlashTableSyncProgress ¶
DeleteTiFlashTableSyncProgress is used to delete the tiflash table replica sync progress.
func GetAllLabelRules ¶
GetAllLabelRules gets all label rules from PD.
func GetAllRuleBundles ¶
GetAllRuleBundles is used to get all rule bundles from PD It is used to load full rules from PD while fullload infoschema.
func GetAllServerInfo ¶
func GetAllServerInfo(ctx context.Context) (map[string]*ServerInfo, error)
GetAllServerInfo gets all servers static information from etcd.
func GetLabelRules ¶
GetLabelRules gets the label rules according to the given IDs from PD.
func GetPDScheduleConfig ¶
GetPDScheduleConfig gets the schedule information from pd
func GetPrometheusAddr ¶
GetPrometheusAddr gets prometheus Address
func GetResourceGroup ¶
GetResourceGroup is used to get one specific resource group from resource manager.
func GetRuleBundle ¶
GetRuleBundle is used to get one specific rule bundle from PD.
func GetTiFlashGroupRules ¶
GetTiFlashGroupRules to get all placement rule in a certain group.
func GetTiFlashProgressFromCache ¶
GetTiFlashProgressFromCache gets tiflash replica progress from tiflashProgressCache
func GetTiFlashRegionCountFromPD ¶
GetTiFlashRegionCountFromPD is a helper function calling `/stats/region`.
func GetTiFlashStoresStat ¶
func GetTiFlashStoresStat(ctx context.Context) (*pdhttp.StoresInfo, error)
GetTiFlashStoresStat gets the TiKV store information by accessing PD's api.
func GetTiProxyServerInfo ¶
func GetTiProxyServerInfo(ctx context.Context) (map[string]*TiProxyServerInfo, error)
GetTiProxyServerInfo gets all TiProxy servers information from etcd.
func ListResourceGroups ¶
func ListResourceGroups(ctx context.Context) ([]*rmpb.ResourceGroup, error)
ListResourceGroups is used to get all resource groups from resource manager.
func MakeNewRule ¶
MakeNewRule creates a pd rule for TiFlash.
func MakeRuleID ¶
MakeRuleID creates a rule ID for TiFlash with given TableID. This interface is exported for the module who wants to manipulate the TiFlash rule. The rule ID is in the format of "table-<TableID>-r". NOTE: PLEASE DO NOT write the rule ID manually, use this interface instead.
func ModifyResourceGroup ¶
func ModifyResourceGroup(ctx context.Context, group *rmpb.ResourceGroup) error
ModifyResourceGroup is used to modify one specific resource group to resource manager.
func MustGetTiFlashProgress ¶
func MustGetTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores *map[int64]pdhttp.StoreInfo) (float64, error)
MustGetTiFlashProgress gets tiflash replica progress from tiflashProgressCache, if cache not exist, it calculates progress from PD and TiFlash and inserts progress into cache.
func NewMockResourceManagerClient ¶
func NewMockResourceManagerClient() pd.ResourceManagerClient
NewMockResourceManagerClient return a mock ResourceManagerClient for test usage.
func PutLabelRule ¶
PutLabelRule synchronizes the label rule to PD.
func PutRuleBundles ¶
PutRuleBundles is used to post specific rule bundles to PD. an "empty" bundle means delete bundle if a bundle with such ID exists.
func PutRuleBundlesWithDefaultRetry ¶
PutRuleBundlesWithDefaultRetry will retry for default times
func PutRuleBundlesWithRetry ¶
func PutRuleBundlesWithRetry(ctx context.Context, bundles []*placement.Bundle, maxRetry int, interval time.Duration) (err error)
PutRuleBundlesWithRetry will retry for specified times when PutRuleBundles failed
func SetEtcdClient ¶
SetEtcdClient is only used for test. SetEtcdClient is not thread-safe and may cause data race with the initialization of the domain. Because this usage is test-only, we don't need to introduce a lock or atomic variable for it. Use it after the domain initialization is done.
func SetMockTiFlash ¶
func SetMockTiFlash(tiflash *MockTiFlash)
SetMockTiFlash can only be used in tests to set MockTiFlash
func SetPDHttpCliForTest ¶
SetPDHttpCliForTest sets the pdhttp.Client for testing. Please do not use it in the production environment.
func SetPDScheduleConfig ¶
SetPDScheduleConfig sets the schedule information for pd
func SetTiFlashGroupConfig ¶
SetTiFlashGroupConfig is a helper function to set tiflash rule group config
func SetTiFlashPlacementRule ¶
SetTiFlashPlacementRule is a helper function to set placement rule. It is discouraged to use SetTiFlashPlacementRule directly, use `ConfigureTiFlashPDForTable`/`ConfigureTiFlashPDForPartitions` instead.
func StoreInternalSession ¶
StoreInternalSession is the entry function for store an internal session to SessionManager. return whether the session is stored successfully.
func SyncTiFlashTableSchema ¶
SyncTiFlashTableSchema syncs TiFlash table schema.
func UpdateLabelRules ¶
func UpdateLabelRules(ctx context.Context, patch *pdhttp.LabelRulePatch) error
UpdateLabelRules synchronizes the label rule to PD.
func UpdateServerLabel ¶
UpdateServerLabel updates the server label for global info syncer.
func UpdateTiFlashProgressCache ¶
UpdateTiFlashProgressCache updates tiflashProgressCache
Types ¶
type DynamicServerInfo ¶
DynamicServerInfo represents the dynamic information of the server. Please note that it may change when TiDB is running. To update the dynamic server information, use `InfoSyncer.cloneDynamicServerInfo` to obtain a copy of the dynamic server info. After making modifications, use `InfoSyncer.setDynamicServerInfo` to update the dynamic server information.
type InfoSyncer ¶
type InfoSyncer struct {
// contains filtered or unexported fields
}
InfoSyncer stores server info to etcd when the tidb-server starts and delete when tidb-server shuts down.
func GlobalInfoSyncerInit ¶
func GlobalInfoSyncerInit( ctx context.Context, id string, serverIDGetter func() uint64, etcdCli, unprefixedEtcdCli *clientv3.Client, pdCli pd.Client, pdHTTPCli pdhttp.Client, codec tikv.Codec, skipRegisterToDashBoard bool, infoCache infoschemaMinTS, ) (*InfoSyncer, error)
GlobalInfoSyncerInit return a new InfoSyncer. It is exported for testing.
func (*InfoSyncer) Done ¶
func (is *InfoSyncer) Done() <-chan struct{}
Done returns a channel that closes when the info syncer is no longer being refreshed.
func (*InfoSyncer) GetAllTiDBTopology ¶
func (is *InfoSyncer) GetAllTiDBTopology(ctx context.Context) ([]*TopologyInfo, error)
GetAllTiDBTopology gets all tidb topology
func (*InfoSyncer) GetMinStartTS ¶
func (is *InfoSyncer) GetMinStartTS() uint64
GetMinStartTS get min start timestamp. Export for testing.
func (*InfoSyncer) GetSessionManager ¶
func (is *InfoSyncer) GetSessionManager() util2.SessionManager
GetSessionManager get the session manager.
func (*InfoSyncer) RemoveMinStartTS ¶
func (is *InfoSyncer) RemoveMinStartTS()
RemoveMinStartTS removes self server min start timestamp from etcd.
func (*InfoSyncer) RemoveServerInfo ¶
func (is *InfoSyncer) RemoveServerInfo()
RemoveServerInfo remove self server static information from etcd.
func (*InfoSyncer) ReportMinStartTS ¶
func (is *InfoSyncer) ReportMinStartTS(store kv.Storage)
ReportMinStartTS reports self server min start timestamp to ETCD.
func (*InfoSyncer) Restart ¶
func (is *InfoSyncer) Restart(ctx context.Context) error
Restart restart the info syncer with new session leaseID and store server info to etcd again.
func (*InfoSyncer) RestartTopology ¶
func (is *InfoSyncer) RestartTopology(ctx context.Context) error
RestartTopology restart the topology syncer with new session leaseID and store server info to etcd again.
func (*InfoSyncer) SetSessionManager ¶
func (is *InfoSyncer) SetSessionManager(manager util2.SessionManager)
SetSessionManager set the session manager for InfoSyncer.
func (*InfoSyncer) StoreServerInfo ¶
func (is *InfoSyncer) StoreServerInfo(ctx context.Context) error
StoreServerInfo stores self server static information to etcd.
func (*InfoSyncer) StoreTopologyInfo ¶
func (is *InfoSyncer) StoreTopologyInfo(ctx context.Context) error
StoreTopologyInfo stores the topology of tidb to etcd.
func (*InfoSyncer) TopologyDone ¶
func (is *InfoSyncer) TopologyDone() <-chan struct{}
TopologyDone returns a channel that closes when the topology syncer is no longer being refreshed.
type LabelRuleManager ¶
type LabelRuleManager interface {
PutLabelRule(ctx context.Context, rule *label.Rule) error
UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error
GetAllLabelRules(ctx context.Context) ([]*label.Rule, error)
GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error)
}
LabelRuleManager manages label rules
type MockGlobalServerInfoManager ¶
type MockGlobalServerInfoManager struct {
// contains filtered or unexported fields
}
MockGlobalServerInfoManager manages serverInfos in Distributed unit tests.
func (*MockGlobalServerInfoManager) Add ¶
func (m *MockGlobalServerInfoManager) Add(id string, serverIDGetter func() uint64)
Add one mock ServerInfo.
func (*MockGlobalServerInfoManager) Close ¶
func (m *MockGlobalServerInfoManager) Close()
Close reset MockGlobalServerInfoManager.
func (*MockGlobalServerInfoManager) Delete ¶
func (m *MockGlobalServerInfoManager) Delete(idx int) error
Delete one mock ServerInfo by idx.
func (*MockGlobalServerInfoManager) DeleteByExecID ¶
func (m *MockGlobalServerInfoManager) DeleteByExecID(execID string)
DeleteByExecID delete ServerInfo by execID.
func (*MockGlobalServerInfoManager) GetAllServerInfo ¶
func (m *MockGlobalServerInfoManager) GetAllServerInfo() map[string]*ServerInfo
GetAllServerInfo return all serverInfo in a map.
type MockTiFlash ¶
type MockTiFlash struct {
syncutil.Mutex
StatusAddr string
StatusServer *httptest.Server
SyncStatus map[int]mockTiFlashTableInfo
StoreInfo map[uint64]pd.MetaStore
GlobalTiFlashPlacementRules map[string]*pd.Rule
PdEnabled bool
TiflashDelay time.Duration
StartTime time.Time
NotAvailable bool
NetworkError bool
// contains filtered or unexported fields
}
MockTiFlash mocks a TiFlash, with necessary Pd support.
func GetMockTiFlash ¶
func GetMockTiFlash() *MockTiFlash
GetMockTiFlash can only be used in tests to get MockTiFlash
func NewMockTiFlash ¶
func NewMockTiFlash() *MockTiFlash
NewMockTiFlash creates a MockTiFlash with a mocked TiFlash server.
func (*MockTiFlash) AddStore ¶
func (tiflash *MockTiFlash) AddStore(storeID uint64, address string)
AddStore is mock function for adding store info into MockTiFlash.
func (*MockTiFlash) CheckPlacementRule ¶
func (tiflash *MockTiFlash) CheckPlacementRule(rule pd.Rule) bool
CheckPlacementRule find if a given rule precisely matches already set rules.
func (*MockTiFlash) CleanPlacementRules ¶
func (tiflash *MockTiFlash) CleanPlacementRules()
CleanPlacementRules cleans all placement rules.
func (*MockTiFlash) GetPlacementRule ¶
func (tiflash *MockTiFlash) GetPlacementRule(ruleName string) (*pd.Rule, bool)
GetPlacementRule find a rule by name.
func (*MockTiFlash) GetRuleGroupIndex ¶
func (tiflash *MockTiFlash) GetRuleGroupIndex() int
GetRuleGroupIndex gets the group index of tiflash
func (*MockTiFlash) GetTableSyncStatus ¶
func (tiflash *MockTiFlash) GetTableSyncStatus(tableID int) (*mockTiFlashTableInfo, bool)
GetTableSyncStatus returns table sync status by given tableID.
func (*MockTiFlash) HandleDeletePlacementRule ¶
func (tiflash *MockTiFlash) HandleDeletePlacementRule(_ string, ruleID string)
HandleDeletePlacementRule is mock function for DeleteTiFlashPlacementRule.
func (*MockTiFlash) HandleGetGroupRules ¶
func (tiflash *MockTiFlash) HandleGetGroupRules(_ string) ([]*pd.Rule, error)
HandleGetGroupRules is mock function for GetTiFlashGroupRules.
func (*MockTiFlash) HandleGetPDRegionRecordStats ¶
func (*MockTiFlash) HandleGetPDRegionRecordStats(int64) pd.RegionStats
HandleGetPDRegionRecordStats is mock function for GetRegionCountFromPD. It currently always returns 1 Region for convenience.
func (*MockTiFlash) HandleGetStoresStat ¶
func (tiflash *MockTiFlash) HandleGetStoresStat() *pd.StoresInfo
HandleGetStoresStat is mock function for GetStoresStat. It returns address of our mocked TiFlash server.
func (*MockTiFlash) HandlePostAccelerateSchedule ¶
func (tiflash *MockTiFlash) HandlePostAccelerateSchedule(endKey string) error
HandlePostAccelerateSchedule is mock function for PostAccelerateSchedule
func (*MockTiFlash) HandleSetPlacementRule ¶
func (tiflash *MockTiFlash) HandleSetPlacementRule(rule *pd.Rule) error
HandleSetPlacementRule is mock function for SetTiFlashPlacementRule.
func (*MockTiFlash) HandleSetPlacementRuleBatch ¶
func (tiflash *MockTiFlash) HandleSetPlacementRuleBatch(rules []*pd.Rule) error
HandleSetPlacementRuleBatch is mock function for batch SetTiFlashPlacementRule.
func (*MockTiFlash) PdSwitch ¶
func (tiflash *MockTiFlash) PdSwitch(enabled bool)
PdSwitch controls if pd is enabled.
func (*MockTiFlash) PlacementRulesLen ¶
func (tiflash *MockTiFlash) PlacementRulesLen() int
PlacementRulesLen gets length of all currently set placement rules.
func (*MockTiFlash) ResetSyncStatus ¶
func (tiflash *MockTiFlash) ResetSyncStatus(tableID int, canAvailable bool)
ResetSyncStatus is mock function for reset sync status.
func (*MockTiFlash) SetNetworkError ¶
func (tiflash *MockTiFlash) SetNetworkError(e bool)
SetNetworkError sets network error state.
func (*MockTiFlash) SetRuleGroupIndex ¶
func (tiflash *MockTiFlash) SetRuleGroupIndex(groupIndex int)
SetRuleGroupIndex sets the group index of tiflash
type MockTiFlashError ¶
type MockTiFlashError struct {
Message string
}
MockTiFlashError represents MockTiFlash error
func (*MockTiFlashError) Error ¶
func (me *MockTiFlashError) Error() string
type PDLabelManager ¶
type PDLabelManager struct {
// contains filtered or unexported fields
}
PDLabelManager manages rules with pd
func (*PDLabelManager) GetAllLabelRules ¶
GetAllLabelRules implements GetAllLabelRules
func (*PDLabelManager) GetLabelRules ¶
func (lm *PDLabelManager) GetLabelRules(ctx context.Context, ruleIDs []string) (map[string]*label.Rule, error)
GetLabelRules implements GetLabelRules
func (*PDLabelManager) PutLabelRule ¶
PutLabelRule implements PutLabelRule
func (*PDLabelManager) UpdateLabelRules ¶
func (lm *PDLabelManager) UpdateLabelRules(ctx context.Context, patch *pd.LabelRulePatch) error
UpdateLabelRules implements UpdateLabelRules
type PDPlacementManager ¶
type PDPlacementManager struct {
// contains filtered or unexported fields
}
PDPlacementManager manages placement with pd
func (*PDPlacementManager) GetAllRuleBundles ¶
GetAllRuleBundles is used to get all rule bundles from PD. It is used to load full rules from PD while fullload infoschema.
func (*PDPlacementManager) GetRuleBundle ¶
func (m *PDPlacementManager) GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error)
GetRuleBundle is used to get one specific rule bundle from PD.
func (*PDPlacementManager) PutRuleBundles ¶
PutRuleBundles is used to post specific rule bundles to PD.
type PDScheduleManager ¶
PDScheduleManager manages schedule with pd
type PlacementManager ¶
type PlacementManager interface {
// GetRuleBundle is used to get one specific rule bundle from PD.
GetRuleBundle(ctx context.Context, name string) (*placement.Bundle, error)
// GetAllRuleBundles is used to get all rule bundles from PD. It is used to load full rules from PD while fullload infoschema.
GetAllRuleBundles(ctx context.Context) ([]*placement.Bundle, error)
// PutRuleBundles is used to post specific rule bundles to PD.
PutRuleBundles(ctx context.Context, bundles []*placement.Bundle) error
}
PlacementManager manages placement settings
type PlacementScheduleState ¶
type PlacementScheduleState int
PlacementScheduleState is the returned third-valued state from GetReplicationState(). For convenience, the string of PD is deserialized into an enum first.
const ( // PlacementScheduleStatePending corresponds to "PENDING" from PD. PlacementScheduleStatePending PlacementScheduleState = iota // PlacementScheduleStateInProgress corresponds to "INPROGRESS" from PD. PlacementScheduleStateInProgress // PlacementScheduleStateScheduled corresponds to "REPLICATED" from PD. PlacementScheduleStateScheduled )
func GetReplicationState ¶
func GetReplicationState(ctx context.Context, startKey []byte, endKey []byte) (PlacementScheduleState, error)
GetReplicationState is used to check if regions in the given keyranges are replicated from PD.
func (PlacementScheduleState) String ¶
func (t PlacementScheduleState) String() string
type ScheduleManager ¶
type ScheduleManager interface {
GetScheduleConfig(ctx context.Context) (map[string]any, error)
SetScheduleConfig(ctx context.Context, config map[string]any) error
}
ScheduleManager manages schedule configs
type ServerInfo ¶
type ServerInfo struct {
StaticServerInfo
DynamicServerInfo
}
ServerInfo represents the server's basic information. It consists of two sections: static and dynamic. The static information is generated during the startup of the TiDB server and should never be modified while the TiDB server is running. The dynamic information can be updated while the TiDB server is running and should be synchronized with PD's etcd.
func GetServerInfo ¶
func GetServerInfo() (*ServerInfo, error)
GetServerInfo gets self server static information.
func GetServerInfoByID ¶
func GetServerInfoByID(ctx context.Context, id string) (*ServerInfo, error)
GetServerInfoByID gets specified server static information from etcd.
func (*ServerInfo) Marshal ¶
func (info *ServerInfo) Marshal() ([]byte, error)
Marshal `ServerInfo` into bytes.
func (*ServerInfo) Unmarshal ¶
func (info *ServerInfo) Unmarshal(v []byte) error
Unmarshal `ServerInfo` from bytes.
type ServerVersionInfo ¶
ServerVersionInfo is the server version and git_hash.
type StaticServerInfo ¶
type StaticServerInfo struct {
ServerVersionInfo
ID string `json:"ddl_id"`
IP string `json:"ip"`
Port uint `json:"listening_port"`
StatusPort uint `json:"status_port"`
Lease string `json:"lease"`
StartTimestamp int64 `json:"start_timestamp"`
// ServerID is a function, to always retrieve latest serverID from `Domain`,
// which will be changed on occasions such as connection to PD is restored after broken.
ServerIDGetter func() uint64 `json:"-"`
// JSONServerID is `serverID` for json marshal/unmarshal ONLY.
JSONServerID uint64 `json:"server_id"`
}
StaticServerInfo is server static information. It will not be updated when tidb-server running. So please only put static information in ServerInfo struct. DO NOT edit it after tidb-server started.
type TiCDCInfo ¶
type TiCDCInfo struct {
ID string `json:"id"`
Address string `json:"address"`
Version string `json:"version"`
GitHash string `json:"git-hash"`
DeployPath string `json:"deploy-path"`
StartTimestamp int64 `json:"start-timestamp"`
ClusterID string `json:"cluster-id"`
}
TiCDCInfo is the server info for TiCDC.
type TiFlashReplicaManager ¶
type TiFlashReplicaManager interface {
// SetTiFlashGroupConfig sets the group index of the tiflash placement rule
SetTiFlashGroupConfig(ctx context.Context) error
// SetPlacementRule is a helper function to set placement rule.
SetPlacementRule(ctx context.Context, rule *pd.Rule) error
// SetPlacementRuleBatch is a helper function to set a batch of placement rules.
SetPlacementRuleBatch(ctx context.Context, rules []*pd.Rule) error
// DeletePlacementRule is to delete placement rule for certain group.
DeletePlacementRule(ctx context.Context, group string, ruleID string) error
// GetGroupRules to get all placement rule in a certain group.
GetGroupRules(ctx context.Context, group string) ([]*pd.Rule, error)
// PostAccelerateScheduleBatch sends `regions/accelerate-schedule/batch` request.
PostAccelerateScheduleBatch(ctx context.Context, tableIDs []int64) error
// GetRegionCountFromPD is a helper function calling `/stats/region`.
GetRegionCountFromPD(ctx context.Context, tableID int64, regionCount *int) error
// GetStoresStat gets the TiKV store information by accessing PD's api.
GetStoresStat(ctx context.Context) (*pd.StoresInfo, error)
// CalculateTiFlashProgress calculates TiFlash replica progress
CalculateTiFlashProgress(tableID int64, replicaCount uint64, TiFlashStores map[int64]pd.StoreInfo) (float64, error)
// UpdateTiFlashProgressCache updates tiflashProgressCache
UpdateTiFlashProgressCache(tableID int64, progress float64)
// GetTiFlashProgressFromCache gets tiflash replica progress from tiflashProgressCache
GetTiFlashProgressFromCache(tableID int64) (float64, bool)
// DeleteTiFlashProgressFromCache delete tiflash replica progress from tiflashProgressCache
DeleteTiFlashProgressFromCache(tableID int64)
// CleanTiFlashProgressCache clean progress cache
CleanTiFlashProgressCache()
// SyncTiFlashTableSchema syncs the table's schema to TiFlash.
SyncTiFlashTableSchema(tableID int64, storesStat []pd.StoreInfo) error
// Close is to close TiFlashReplicaManager
Close(ctx context.Context)
}
TiFlashReplicaManager manages placement settings and replica progress for TiFlash.
type TiFlashReplicaManagerCtx ¶
type TiFlashReplicaManagerCtx struct {
sync.RWMutex // protect tiflashProgressCache
// contains filtered or unexported fields
}
TiFlashReplicaManagerCtx manages placement with pd and replica progress for TiFlash.
func (*TiFlashReplicaManagerCtx) CalculateTiFlashProgress ¶
func (m *TiFlashReplicaManagerCtx) CalculateTiFlashProgress(tableID int64, replicaCount uint64, tiFlashStores map[int64]pd.StoreInfo) (float64, error)
CalculateTiFlashProgress calculates TiFlash replica progress.
func (*TiFlashReplicaManagerCtx) CleanTiFlashProgressCache ¶
func (m *TiFlashReplicaManagerCtx) CleanTiFlashProgressCache()
CleanTiFlashProgressCache clean progress cache
func (*TiFlashReplicaManagerCtx) Close ¶
func (*TiFlashReplicaManagerCtx) Close(context.Context)
Close is called to close TiFlashReplicaManagerCtx.
func (*TiFlashReplicaManagerCtx) DeletePlacementRule ¶
func (m *TiFlashReplicaManagerCtx) DeletePlacementRule(ctx context.Context, group string, ruleID string) error
DeletePlacementRule is to delete placement rule for certain group.
func (*TiFlashReplicaManagerCtx) DeleteTiFlashProgressFromCache ¶
func (m *TiFlashReplicaManagerCtx) DeleteTiFlashProgressFromCache(tableID int64)
DeleteTiFlashProgressFromCache delete tiflash replica progress from tiflashProgressCache
func (*TiFlashReplicaManagerCtx) GetGroupRules ¶
func (m *TiFlashReplicaManagerCtx) GetGroupRules(ctx context.Context, group string) ([]*pd.Rule, error)
GetGroupRules to get all placement rule in a certain group.
func (*TiFlashReplicaManagerCtx) GetRegionCountFromPD ¶
func (m *TiFlashReplicaManagerCtx) GetRegionCountFromPD(ctx context.Context, tableID int64, regionCount *int) error
GetRegionCountFromPD is a helper function calling `/stats/region`.
func (*TiFlashReplicaManagerCtx) GetStoresStat ¶
func (m *TiFlashReplicaManagerCtx) GetStoresStat(ctx context.Context) (*pd.StoresInfo, error)
GetStoresStat gets the TiKV store information by accessing PD's api.
func (*TiFlashReplicaManagerCtx) GetTiFlashProgressFromCache ¶
func (m *TiFlashReplicaManagerCtx) GetTiFlashProgressFromCache(tableID int64) (float64, bool)
GetTiFlashProgressFromCache gets tiflash replica progress from tiflashProgressCache
func (*TiFlashReplicaManagerCtx) PostAccelerateScheduleBatch ¶
func (m *TiFlashReplicaManagerCtx) PostAccelerateScheduleBatch(ctx context.Context, tableIDs []int64) error
PostAccelerateScheduleBatch sends `regions/batch-accelerate-schedule` request.
func (*TiFlashReplicaManagerCtx) SetPlacementRule ¶
SetPlacementRule is a helper function to set placement rule.
func (*TiFlashReplicaManagerCtx) SetPlacementRuleBatch ¶
func (m *TiFlashReplicaManagerCtx) SetPlacementRuleBatch(ctx context.Context, rules []*pd.Rule) error
SetPlacementRuleBatch is a helper function to set a batch of placement rules.
func (*TiFlashReplicaManagerCtx) SetTiFlashGroupConfig ¶
func (m *TiFlashReplicaManagerCtx) SetTiFlashGroupConfig(ctx context.Context) error
SetTiFlashGroupConfig sets the tiflash's rule group config
func (*TiFlashReplicaManagerCtx) SyncTiFlashTableSchema ¶
func (m *TiFlashReplicaManagerCtx) SyncTiFlashTableSchema(tableID int64, tiFlashStores []pd.StoreInfo) error
SyncTiFlashTableSchema syncs the table's schema to TiFlash.
func (*TiFlashReplicaManagerCtx) UpdateTiFlashProgressCache ¶
func (m *TiFlashReplicaManagerCtx) UpdateTiFlashProgressCache(tableID int64, progress float64)
UpdateTiFlashProgressCache updates tiflashProgressCache
type TiProxyServerInfo ¶
type TiProxyServerInfo struct {
Version string `json:"version"`
GitHash string `json:"git_hash"`
IP string `json:"ip"`
Port string `json:"port"`
StatusPort string `json:"status_port"`
StartTimestamp int64 `json:"start_timestamp"`
}
TiProxyServerInfo is the server info for TiProxy.
type TopologyInfo ¶
type TopologyInfo struct {
ServerVersionInfo
IP string `json:"ip"`
StatusPort uint `json:"status_port"`
DeployPath string `json:"deploy_path"`
StartTimestamp int64 `json:"start_timestamp"`
Labels map[string]string `json:"labels"`
}
TopologyInfo is the topology info