import "github.com/pingcap/tidb/domain/infosync"
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" // InfoSessionTTL is the ETCD session's TTL in seconds. InfoSessionTTL = 10 * 60 // 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" // TablePrometheusCacheExpiry is the expiry time for prometheus address cache. TablePrometheusCacheExpiry = 10 * time.Second )
var ErrPrometheusAddrIsNotSet = dbterror.ClassDomain.NewStd(errno.ErrPrometheusAddrIsNotSet)
ErrPrometheusAddrIsNotSet is the error that Prometheus address is not set in PD and etcd
DeleteTiFlashTableSyncProgress is used to delete the tiflash table replica sync progress.
GetAllRuleBundles is used to get all rule bundles from PD. It is used to load full rules from PD while fullload infoschema.
GetAllServerInfo gets all servers static information from etcd.
GetPrometheusAddr gets prometheus Address
GetRuleBundle is used to get one specific rule bundle from PD.
GetTiFlashTableSyncProgress uses to get all the tiflash table replica sync progress.
PutRuleBundles is used to post specific rule bundles to PD.
UpdateTiFlashTableSyncProgress is used to update the tiflash table replica sync progress.
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(ctx context.Context, id string, serverIDGetter func() uint64, etcdCli *clientv3.Client, skipRegisterToDashBoard bool) (*InfoSyncer, error)
GlobalInfoSyncerInit return a new InfoSyncer. It is exported for testing.
func (is *InfoSyncer) Done() <-chan struct{}
Done returns a channel that closes when the info syncer is no longer being refreshed.
func (is *InfoSyncer) GetMinStartTS() uint64
GetMinStartTS get min start timestamp. Export for testing.
func (is *InfoSyncer) GetSessionManager() util2.SessionManager
GetSessionManager get the session manager.
func (is *InfoSyncer) RemoveMinStartTS()
RemoveMinStartTS removes self server min start timestamp from etcd.
func (is *InfoSyncer) RemoveServerInfo()
RemoveServerInfo remove self server static information from etcd.
func (is *InfoSyncer) ReportMinStartTS(store kv.Storage)
ReportMinStartTS reports self server min start timestamp to ETCD.
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 (is *InfoSyncer) RestartTopology(ctx context.Context) error
RestartTopology restart the topology syncer with new session leaseID and store server info to etcd again.
func (is *InfoSyncer) SetSessionManager(manager util2.SessionManager)
SetSessionManager set the session manager for InfoSyncer.
func (is *InfoSyncer) StoreServerInfo(ctx context.Context) error
StoreServerInfo stores self server static information to etcd.
func (is *InfoSyncer) StoreTopologyInfo(ctx context.Context) error
StoreTopologyInfo stores the topology of tidb to etcd.
func (is *InfoSyncer) TopologyDone() <-chan struct{}
TopologyDone returns a channel that closes when the topology syncer is no longer being refreshed.
type ServerInfo 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"` BinlogStatus string `json:"binlog_status"` StartTimestamp int64 `json:"start_timestamp"` Labels map[string]string `json:"labels"` // 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"` }
ServerInfo is server static information. It will not be updated when tidb-server running. So please only put static information in ServerInfo struct.
func GetServerInfo() (*ServerInfo, error)
GetServerInfo gets self server static information.
GetServerInfoByID gets specified server static information from etcd.
func (info *ServerInfo) Marshal() ([]byte, error)
Marshal `ServerInfo` into bytes.
func (info *ServerInfo) Unmarshal(v []byte) error
Unmarshal `ServerInfo` from bytes.
ServerVersionInfo is the server version and git_hash.
Package infosync imports 35 packages (graph) and is imported by 20 packages. Updated 2021-01-25. Refresh now. Tools for package owners.