Documentation ¶
Overview ¶
Package tikv provides tcp connection to kvserver.
Index ¶
- Constants
- func NewBackoffFn(base, cap, jitter int) func() int
- func NewMockTikvStore() (kv.Storage, error)
- type Backoffer
- type Client
- type Conn
- type CopClient
- type Driver
- type GCWorker
- type Lock
- type LockResolver
- type Pool
- type Pools
- type Region
- func (r *Region) Clone() *Region
- func (r *Region) Contains(key []byte) bool
- func (r *Region) EndKey() []byte
- func (r *Region) GetAddress() string
- func (r *Region) GetContext() *kvrpcpb.Context
- func (r *Region) GetID() uint64
- func (r *Region) NextPeer() (*metapb.Peer, error)
- func (r *Region) StartKey() []byte
- func (r *Region) VerID() RegionVerID
- type RegionCache
- func (c *RegionCache) DropRegion(id RegionVerID)
- func (c *RegionCache) GetRegion(bo *Backoffer, key []byte) (*Region, error)
- func (c *RegionCache) GetRegionByVerID(id RegionVerID) *Region
- func (c *RegionCache) GroupKeysByRegion(bo *Backoffer, keys [][]byte) (map[RegionVerID][][]byte, RegionVerID, error)
- func (c *RegionCache) NextPeer(id RegionVerID)
- func (c *RegionCache) OnRegionStale(old *Region, newRegions []*metapb.Region) error
- func (c *RegionCache) UpdateLeader(regionID RegionVerID, leaderID uint64)
- type RegionVerID
- type Scanner
- type TxnStatus
Constants ¶
const ( // NoJitter makes the backoff sequence strict exponential. NoJitter = 1 + iota // FullJitter applies random factors to strict exponential. FullJitter // EqualJitter is also randomized, but prevents very short sleeps. EqualJitter // DecorrJitter increases the maximum jitter based on the last random value. DecorrJitter )
Variables ¶
This section is empty.
Functions ¶
func NewBackoffFn ¶
NewBackoffFn creates a backoff func which implements exponential backoff with optional jitters. See http://www.awsarchitectureblog.com/2015/03/backoff.html
func NewMockTikvStore ¶
NewMockTikvStore creates a mocked tikv store.
Types ¶
type Backoffer ¶
type Backoffer struct {
// contains filtered or unexported fields
}
Backoffer is a utility for retrying queries.
func NewBackoffer ¶
NewBackoffer creates a Backoffer with maximum sleep time(in ms).
func (*Backoffer) Backoff ¶
Backoff sleeps a while base on the backoffType and records the error message. It returns a retryable error if total sleep time exceeds maxSleep.
func (*Backoffer) Fork ¶
Fork creates a new Backoffer which keeps current Backoffer's sleep time and errors.
func (*Backoffer) WithCancel ¶
func (b *Backoffer) WithCancel() context.CancelFunc
WithCancel returns a cancel function which, when called, would cancel backoffer's context.
type Client ¶
type Client interface { // Close should release all data. Close() error // SendKVReq sends kv request. SendKVReq(addr string, req *kvrpcpb.Request, timeout time.Duration) (*kvrpcpb.Response, error) // SendCopReq sends coprocessor request. SendCopReq(addr string, req *coprocessor.Request, timeout time.Duration) (*coprocessor.Response, error) }
Client is a client that sends RPC. It should not be used after calling Close().
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn is a simple wrapper of net.Conn.
func NewConnection ¶
NewConnection creates a Conn with dial timeout.
func NewConnectionWithSize ¶
func NewConnectionWithSize(addr string, dialTimeout time.Duration, readSize int, writeSize int) (*Conn, error)
NewConnectionWithSize creates a Conn with dial timeout and read/write buffer size.
func (*Conn) BufioReader ¶
BufioReader returns a bufio.Reader for writing.
func (*Conn) SetReadDeadline ¶
SetReadDeadline sets the deadline for future Read calls.
func (*Conn) SetWriteDeadline ¶
SetWriteDeadline sets the deadline for future Write calls.
type CopClient ¶
type CopClient struct {
// contains filtered or unexported fields
}
CopClient is coprocessor client.
func (*CopClient) SupportRequestType ¶
SupportRequestType checks whether reqType is supported.
type GCWorker ¶
type GCWorker struct {
// contains filtered or unexported fields
}
GCWorker periodically triggers GC process on tikv server.
func NewGCWorker ¶
NewGCWorker creates a GCWorker instance.
type LockResolver ¶
type LockResolver struct {
// contains filtered or unexported fields
}
LockResolver resolves locks and also caches resolved txn status.
func NewLockResolver ¶
func NewLockResolver(etcdAddrs []string) (*LockResolver, error)
NewLockResolver creates a LockResolver.
func (*LockResolver) GetTxnStatus ¶
func (lr *LockResolver) GetTxnStatus(txnID uint64, primary []byte) (TxnStatus, error)
GetTxnStatus queries tikv-server for a txn's status (commit/rollback). If the primary key is still locked, it will launch a Rollback to abort it. To avoid unnecessarily aborting too many txns, it is wiser to wait a few seconds before calling it after Prewrite.
func (*LockResolver) ResolveLocks ¶
func (lr *LockResolver) ResolveLocks(bo *Backoffer, locks []*Lock) (ok bool, err error)
ResolveLocks tries to resolve Locks. The resolving process is in 3 steps:
- Use the `lockTTL` to pick up all expired locks. Only locks that are too old are considered orphan locks and will be handled later. If all locks are expired then all locks will be resolved so the returned `ok` will be true, otherwise caller should sleep a while before retry.
- For each lock, query the primary key to get txn(which left the lock)'s commit status.
- Send `ResolveLock` cmd to the lock's region to resolve all locks belong to the same transaction.
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Pool is a TCP connection pool that maintains connections with a specific addr.
type Pools ¶
type Pools struct {
// contains filtered or unexported fields
}
Pools maintains connections with multiple addrs.
func NewPools ¶
NewPools creates a Pools. It maintains a Pool for each address, and each Pool has the same capability.
type Region ¶
type Region struct {
// contains filtered or unexported fields
}
Region stores region info. Region is a readonly class.
func (*Region) Contains ¶
Contains checks whether the key is in the region, for the maximum region endKey is empty. startKey <= key < endKey.
func (*Region) GetContext ¶
GetContext constructs kvprotopb.Context from region info.
type RegionCache ¶
type RegionCache struct {
// contains filtered or unexported fields
}
RegionCache caches Regions loaded from PD.
func NewRegionCache ¶
func NewRegionCache(pdClient pd.Client) *RegionCache
NewRegionCache creates a RegionCache.
func (*RegionCache) DropRegion ¶
func (c *RegionCache) DropRegion(id RegionVerID)
DropRegion removes a cached Region.
func (*RegionCache) GetRegion ¶
func (c *RegionCache) GetRegion(bo *Backoffer, key []byte) (*Region, error)
GetRegion find in cache, or get new region.
func (*RegionCache) GetRegionByVerID ¶
func (c *RegionCache) GetRegionByVerID(id RegionVerID) *Region
GetRegionByVerID finds a Region by Region's verID.
func (*RegionCache) GroupKeysByRegion ¶
func (c *RegionCache) GroupKeysByRegion(bo *Backoffer, keys [][]byte) (map[RegionVerID][][]byte, RegionVerID, error)
GroupKeysByRegion separates keys into groups by their belonging Regions. Specially it also returns the first key's region which may be used as the 'PrimaryLockKey' and should be committed ahead of others.
func (*RegionCache) NextPeer ¶
func (c *RegionCache) NextPeer(id RegionVerID)
NextPeer picks next peer as new leader, if out of range of peers delete region.
func (*RegionCache) OnRegionStale ¶
func (c *RegionCache) OnRegionStale(old *Region, newRegions []*metapb.Region) error
OnRegionStale removes the old region and inserts new regions into the cache.
func (*RegionCache) UpdateLeader ¶
func (c *RegionCache) UpdateLeader(regionID RegionVerID, leaderID uint64)
UpdateLeader update some region cache with newer leader info.
type RegionVerID ¶
type RegionVerID struct {
// contains filtered or unexported fields
}
RegionVerID is a unique ID that can identify a Region at a specific version.
type Scanner ¶
type Scanner struct {
// contains filtered or unexported fields
}
Scanner support tikv scan
type TxnStatus ¶
type TxnStatus uint64
TxnStatus represents a txn's final status. It should be Commit or Rollback.
func (TxnStatus) CommitTS ¶
CommitTS returns the txn's commitTS. It is valid iff `IsCommitted` is true.
func (TxnStatus) IsCommitted ¶
IsCommitted returns true if the txn's final status is Commit.