Documentation ¶
Index ¶
- Variables
- func IsLeaderChange(err error) bool
- type Client
- func NewClient(svrAddrs []string, security SecurityOption, opts ...ClientOption) (Client, error)
- func NewClientWithContext(ctx context.Context, svrAddrs []string, security SecurityOption, ...) (Client, error)
- func NewClientWithKeyspace(ctx context.Context, keyspaceID uint32, svrAddrs []string, ...) (Client, error)
- type ClientOption
- type DynamicOption
- type GetRegionOp
- type GetRegionOption
- type GetStoreOp
- type GetStoreOption
- type GlobalConfigItem
- type KeyspaceClient
- type MetaStorageClient
- type Op
- type OpOption
- type Region
- type RegionsOp
- type RegionsOption
- type ResourceManagerClient
- type SecurityOption
- type ServiceDiscovery
- type TSFuture
- type TSOClient
Constants ¶
This section is empty.
Variables ¶
var LeaderHealthCheckInterval = time.Second
LeaderHealthCheckInterval might be changed in the unit to shorten the testing time.
Functions ¶
func IsLeaderChange ¶
IsLeaderChange will determine whether there is a leader change.
Types ¶
type Client ¶
type Client interface { // GetClusterID gets the cluster ID from TM. GetClusterID(ctx context.Context) uint64 // GetAllMembers gets the members Info from TM GetAllMembers(ctx context.Context) ([]*pdpb.Member, error) // GetLeaderAddr returns current leader's address. It returns "" before // syncing leader from server. GetLeaderAddr() string // GetRegion gets a region and its leader Peer from TM by key. // The region may expire after split. Caller is responsible for caching and // taking care of region change. // Also it may return nil if TM finds no Region for the key temporarily, // client should retry later. GetRegion(ctx context.Context, key []byte, opts ...GetRegionOption) (*Region, error) // GetRegionFromMember gets a region from certain members. GetRegionFromMember(ctx context.Context, key []byte, memberURLs []string) (*Region, error) // GetPrevRegion gets the previous region and its leader Peer of the region where the key is located. GetPrevRegion(ctx context.Context, key []byte, opts ...GetRegionOption) (*Region, error) // GetRegionByID gets a region and its leader Peer from TM by id. GetRegionByID(ctx context.Context, regionID uint64, opts ...GetRegionOption) (*Region, error) // ScanRegion gets a list of regions, starts from the region that contains key. // Limit limits the maximum number of regions returned. // If a region has no leader, corresponding leader will be placed by a peer // with empty value (PeerID is 0). ScanRegions(ctx context.Context, key, endKey []byte, limit int) ([]*Region, error) // GetStore gets a store from TM by store id. // The store may expire later. Caller is responsible for caching and taking care // of store change. GetStore(ctx context.Context, storeID uint64) (*metapb.Store, error) // GetAllStores gets all stores from tm. // The store may expire later. Caller is responsible for caching and taking care // of store change. GetAllStores(ctx context.Context, opts ...GetStoreOption) ([]*metapb.Store, error) // Update GC safe point. TiKV will check it and do GC themselves if necessary. // If the given safePoint is less than the current one, it will not be updated. // Returns the new safePoint after updating. UpdateGCSafePoint(ctx context.Context, safePoint uint64) (uint64, error) // UpdateServiceGCSafePoint updates the safepoint for specific service and // returns the minimum safepoint across all services, this value is used to // determine the safepoint for multiple services, it does not trigger a GC // job. Use UpdateGCSafePoint to trigger the GC job if needed. UpdateServiceGCSafePoint(ctx context.Context, serviceID string, ttl int64, safePoint uint64) (uint64, error) // ScatterRegion scatters the specified region. Should use it for a batch of regions, // and the distribution of these regions will be dispersed. // NOTICE: This method is the old version of ScatterRegions, you should use the later one as your first choice. ScatterRegion(ctx context.Context, regionID uint64) error // ScatterRegions scatters the specified regions. Should use it for a batch of regions, // and the distribution of these regions will be dispersed. ScatterRegions(ctx context.Context, regionsID []uint64, opts ...RegionsOption) (*pdpb.ScatterRegionResponse, error) // SplitRegions split regions by given split keys SplitRegions(ctx context.Context, splitKeys [][]byte, opts ...RegionsOption) (*pdpb.SplitRegionsResponse, error) // SplitAndScatterRegions split regions by given split keys and scatter new regions SplitAndScatterRegions(ctx context.Context, splitKeys [][]byte, opts ...RegionsOption) (*pdpb.SplitAndScatterRegionsResponse, error) // GetOperator gets the status of operator of the specified region. GetOperator(ctx context.Context, regionID uint64) (*pdpb.GetOperatorResponse, error) // LoadGlobalConfig gets the global config from etcd LoadGlobalConfig(ctx context.Context, names []string, configPath string) ([]GlobalConfigItem, int64, error) // StoreGlobalConfig set the config from etcd StoreGlobalConfig(ctx context.Context, configPath string, items []GlobalConfigItem) error // WatchGlobalConfig returns an stream with all global config and updates WatchGlobalConfig(ctx context.Context, configPath string, revision int64) (chan []GlobalConfigItem, error) // UpdateOption updates the client option. UpdateOption(option DynamicOption, value interface{}) error // GetExternalTimestamp returns external timestamp GetExternalTimestamp(ctx context.Context) (uint64, error) // SetExternalTimestamp sets external timestamp SetExternalTimestamp(ctx context.Context, timestamp uint64) error // TSOClient is the TSO client. TSOClient // MetaStorageClient is the meta storage client. MetaStorageClient // KeyspaceClient manages keyspace metadata. KeyspaceClient // ResourceManagerClient manages resource group metadata and token assignment. ResourceManagerClient // Close closes the client. Close() }
Client is a TM (Placement Driver) client. It should not be used after calling Close().
func NewClient ¶
func NewClient(svrAddrs []string, security SecurityOption, opts ...ClientOption) (Client, error)
NewClient creates a TM client.
func NewClientWithContext ¶
func NewClientWithContext(ctx context.Context, svrAddrs []string, security SecurityOption, opts ...ClientOption) (Client, error)
NewClientWithContext creates a TM client with context. This API uses the default keyspace id 0.
func NewClientWithKeyspace ¶
func NewClientWithKeyspace(ctx context.Context, keyspaceID uint32, svrAddrs []string, security SecurityOption, opts ...ClientOption) (Client, error)
NewClientWithKeyspace creates a client with context and the specified keyspace id.
type ClientOption ¶
type ClientOption func(c *client)
ClientOption configures client.
func WithCustomTimeoutOption ¶
func WithCustomTimeoutOption(timeout time.Duration) ClientOption
WithCustomTimeoutOption configures the client with timeout option.
func WithForwardingOption ¶
func WithForwardingOption(enableForwarding bool) ClientOption
WithForwardingOption configures the client with forwarding option.
func WithGRPCDialOptions ¶
func WithGRPCDialOptions(opts ...grpc.DialOption) ClientOption
WithGRPCDialOptions configures the client with gRPC dial options.
func WithMaxErrorRetry ¶
func WithMaxErrorRetry(count int) ClientOption
WithMaxErrorRetry configures the client max retry times when connect meets error.
type DynamicOption ¶
type DynamicOption int
DynamicOption is used to distinguish the dynamic option type.
const ( // MaxTSOBatchWaitInterval is the max TSO batch wait interval option. // It is stored as time.Duration and should be between 0 and 10ms. MaxTSOBatchWaitInterval DynamicOption = iota // EnableTSOFollowerProxy is the TSO Follower Proxy option. // It is stored as bool. EnableTSOFollowerProxy )
type GetRegionOp ¶
type GetRegionOp struct {
// contains filtered or unexported fields
}
GetRegionOp represents available options when getting regions.
type GetRegionOption ¶
type GetRegionOption func(op *GetRegionOp)
GetRegionOption configures GetRegionOp.
func WithBuckets ¶
func WithBuckets() GetRegionOption
WithBuckets means getting region and its buckets.
type GetStoreOp ¶
type GetStoreOp struct {
// contains filtered or unexported fields
}
GetStoreOp represents available options when getting stores.
type GetStoreOption ¶
type GetStoreOption func(*GetStoreOp)
GetStoreOption configures GetStoreOp.
func WithExcludeTombstone ¶
func WithExcludeTombstone() GetStoreOption
WithExcludeTombstone excludes tombstone stores from the result.
type GlobalConfigItem ¶
GlobalConfigItem standard format of KV pair in GlobalConfig client
type KeyspaceClient ¶
type KeyspaceClient interface { // LoadKeyspace load and return target keyspace's metadata. LoadKeyspace(ctx context.Context, name string) (*keyspacepb.KeyspaceMeta, error) // WatchKeyspaces watches keyspace meta changes. WatchKeyspaces(ctx context.Context) (chan []*keyspacepb.KeyspaceMeta, error) // UpdateKeyspaceState updates target keyspace's state. UpdateKeyspaceState(ctx context.Context, id uint32, state keyspacepb.KeyspaceState) (*keyspacepb.KeyspaceMeta, error) }
KeyspaceClient manages keyspace metadata.
type MetaStorageClient ¶
type MetaStorageClient interface { // Watch watches on a key or prefix. Watch(ctx context.Context, key []byte, opts ...OpOption) (chan []*meta_storagepb.Event, error) // Get gets the value for a key. Get(ctx context.Context, key []byte, opts ...OpOption) (*meta_storagepb.GetResponse, error) // Put puts a key-value pair into meta storage. Put(ctx context.Context, key []byte, value []byte, opts ...OpOption) (*meta_storagepb.PutResponse, error) }
MetaStorageClient is the interface for meta storage client.
type Op ¶
type Op struct {
// contains filtered or unexported fields
}
Op represents available options when using meta storage client.
type OpOption ¶
type OpOption func(*Op)
OpOption configures etcd Op.
func WithPrevKV ¶
func WithPrevKV() OpOption
WithPrevKV specifies the previous key-value pair of the key.
func WithRangeEnd ¶
WithRangeEnd specifies the range end of the key.
type Region ¶
type Region struct { Meta *metapb.Region Leader *metapb.Peer DownPeers []*metapb.Peer PendingPeers []*metapb.Peer Buckets *metapb.Buckets }
Region contains information of a region's meta and its peers.
type RegionsOp ¶
type RegionsOp struct {
// contains filtered or unexported fields
}
RegionsOp represents available options when operate regions
type RegionsOption ¶
type RegionsOption func(op *RegionsOp)
RegionsOption configures RegionsOp
func WithGroup ¶
func WithGroup(group string) RegionsOption
WithGroup specify the group during Scatter/Split Regions
func WithRetry ¶
func WithRetry(retry uint64) RegionsOption
WithRetry specify the retry limit during Scatter/Split Regions
type ResourceManagerClient ¶
type ResourceManagerClient interface { ListResourceGroups(ctx context.Context) ([]*rmpb.ResourceGroup, error) GetResourceGroup(ctx context.Context, resourceGroupName string) (*rmpb.ResourceGroup, error) AddResourceGroup(ctx context.Context, metaGroup *rmpb.ResourceGroup) (string, error) ModifyResourceGroup(ctx context.Context, metaGroup *rmpb.ResourceGroup) (string, error) DeleteResourceGroup(ctx context.Context, resourceGroupName string) (string, error) WatchResourceGroup(ctx context.Context, revision int64) (chan []*rmpb.ResourceGroup, error) AcquireTokenBuckets(ctx context.Context, request *rmpb.TokenBucketsRequest) ([]*rmpb.TokenBucketResponse, error) }
ResourceManagerClient manages resource group info and token request.
type SecurityOption ¶
type SecurityOption struct { CAPath string CertPath string KeyPath string SSLCABytes []byte SSLCertBytes []byte SSLKEYBytes []byte }
SecurityOption records options about tls
type ServiceDiscovery ¶
type ServiceDiscovery interface { // Init initialize the concrete client underlying Init() error // Close releases all resources Close() // GetClusterID returns the ID of the cluster GetClusterID() uint64 // GetURLs returns the URLs of the servers. GetURLs() []string // GetServingEndpointClientConn returns the grpc client connection of the serving endpoint // which is the leader in a quorum-based cluster or the primary in a primary/secondary // configured cluster. GetServingEndpointClientConn() *grpc.ClientConn // GetClientConns returns the mapping {addr -> a gRPC connection} GetClientConns() *sync.Map // GetServingAddr returns the serving endpoint which is the leader in a quorum-based cluster // or the primary in a primary/secondary configured cluster. GetServingAddr() string // GetBackupAddrs gets the addresses of the current reachable and healthy backup service // endpoints randomly. Backup service endpoints are followers in a quorum-based cluster or // secondaries in a primary/secondary configured cluster. GetBackupAddrs() []string // GetOrCreateGRPCConn returns the corresponding grpc client connection of the given addr GetOrCreateGRPCConn(addr string) (*grpc.ClientConn, error) // ScheduleCheckMemberChanged is used to trigger a check to see if there is any membership change // among the leader/followers in a quorum-based cluster or among the primary/secondaries in a // primary/secondary configured cluster. ScheduleCheckMemberChanged() // CheckMemberChanged immediately check if there is any membership change among the leader/followers // in a quorum-based cluster or among the primary/secondaries in a primary/secondary configured cluster. CheckMemberChanged() error // AddServingAddrSwitchedCallback adds callbacks which will be called when the leader // in a quorum-based cluster or the primary in a primary/secondary configured cluster // is switched. AddServingAddrSwitchedCallback(callbacks ...func()) // AddServiceAddrsSwitchedCallback adds callbacks which will be called when any leader/follower // in a quorum-based cluster or any primary/secondary in a primary/secondary configured cluster // is changed. AddServiceAddrsSwitchedCallback(callbacks ...func()) }
ServiceDiscovery defines the general interface for service discovery on a quorum-based cluster or a primary/secondary configured cluster.
type TSFuture ¶
type TSFuture interface { // Wait gets the physical and logical time, it would block caller if data is not available yet. Wait() (int64, int64, error) }
TSFuture is a future which promises to return a TSO.
type TSOClient ¶
type TSOClient interface { // GetTS gets a timestamp from TM. GetTS(ctx context.Context) (int64, int64, error) // GetTSAsync gets a timestamp from TM, without block the caller. GetTSAsync(ctx context.Context) TSFuture // GetLocalTS gets a local timestamp from TM. GetLocalTS(ctx context.Context, dcLocation string) (int64, int64, error) // GetLocalTSAsync gets a local timestamp from TM, without block the caller. GetLocalTSAsync(ctx context.Context, dcLocation string) TSFuture }
TSOClient is the client used to get timestamps.