Documentation ¶
Overview ¶
Package client provides tcp connection to kvserver.
Package client provides tcp connection to kvserver.
Package client provides tcp connection to kvserver.
Index ¶
- Constants
- Variables
- func DecodeResponse(req *tikvrpc.Request, resp *tikvrpc.Response) (*tikvrpc.Response, error)
- func DecodeV2Key(mode Mode, key []byte) ([]byte, error)
- func DecodeV2Pairs(mode Mode, pairs []*kvrpcpb.KvPair) ([]*kvrpcpb.KvPair, error)
- func EncodeRequest(req *tikvrpc.Request) (*tikvrpc.Request, error)
- func EncodeV2Key(mode Mode, key []byte) []byte
- func EncodeV2KeyRanges(mode Mode, keyRanges []*kvrpcpb.KeyRange) []*kvrpcpb.KeyRange
- func EncodeV2Keys(mode Mode, keys [][]byte) [][]byte
- func EncodeV2Pairs(mode Mode, pairs []*kvrpcpb.KvPair) []*kvrpcpb.KvPair
- func EncodeV2Range(mode Mode, start, end []byte) ([]byte, []byte)
- func MapV2RangeToV1(mode Mode, start []byte, end []byte) ([]byte, []byte)
- type Client
- type Mode
- type Opt
- type RPCClient
Constants ¶
const ( // ModeRaw represent a raw operation in TiKV ModeRaw = iota // ModeTxn represent a transaction operation in TiKV ModeTxn )
const ( ReadTimeoutShort = 30 * time.Second // For requests that read/write several key-values. ReadTimeoutMedium = 60 * time.Second // For requests that may need scan region. // MaxWriteExecutionTime is the MaxExecutionDurationMs field for write requests. // Because the last deadline check is before proposing, let us give it 10 more seconds // after proposing. MaxWriteExecutionTime = ReadTimeoutShort - 10*time.Second )
Timeout durations.
const ( GrpcInitialWindowSize = 1 << 30 GrpcInitialConnWindowSize = 1 << 30 )
Grpc window size
Variables ¶
var ( // APIV2RawKeyPrefix is prefix of raw key in API V2. APIV2RawKeyPrefix = []byte{'r', 0, 0, 0} // APIV2RawEndKey is max key of raw key in API V2. APIV2RawEndKey = []byte{'r', 0, 0, 1} // APIV2TxnKeyPrefix is prefix of txn key in API V2. APIV2TxnKeyPrefix = []byte{'x', 0, 0, 0} // APIV2TxnEndKey is max key of txn key in API V2. APIV2TxnEndKey = []byte{'x', 0, 0, 1} )
var MaxRecvMsgSize = math.MaxInt64 - 1
MaxRecvMsgSize set max gRPC receive message size received from server. If any message size is larger than current value, an error will be reported from gRPC.
Functions ¶
func DecodeResponse ¶ added in v2.0.2
DecodeResponse decode the resp in specified API version format.
func DecodeV2Key ¶ added in v2.0.2
DecodeV2Key decodes API V2 encoded key into a normal user key.
func DecodeV2Pairs ¶ added in v2.0.2
DecodeV2Pairs decodes API V2 encoded pairs into normal user pairs.
func EncodeRequest ¶ added in v2.0.2
EncodeRequest encodes req into specified API version format. NOTE: req is reused on retry. MUST encode on cloned request, other than overwrite the original.
func EncodeV2Key ¶ added in v2.0.2
EncodeV2Key encode a user key into API V2 format.
func EncodeV2KeyRanges ¶ added in v2.0.2
EncodeV2KeyRanges encode KeyRange slice into API V2 formatted new slice.
func EncodeV2Keys ¶ added in v2.0.2
EncodeV2Keys encodes keys into API V2 format.
func EncodeV2Pairs ¶ added in v2.0.2
EncodeV2Pairs encodes pairs into API V2 format.
func EncodeV2Range ¶ added in v2.0.2
EncodeV2Range encode a range into API V2 format.
Types ¶
type Client ¶
type Client interface { // Close should release all data. Close() error // CloseAddr closes gRPC connections to the address. It will reconnect the next time it's used. CloseAddr(addr string) error // SendRequest sends Request. SendRequest(ctx context.Context, addr string, req *tikvrpc.Request, timeout time.Duration) (*tikvrpc.Response, error) }
Client is a client that sends RPC. It should not be used after calling Close().
func NewInterceptedClient ¶
NewInterceptedClient creates a Client which can execute interceptor.
func NewReqCollapse ¶
NewReqCollapse creates a reqCollapse.
type Opt ¶
type Opt func(*option)
Opt is the option for the client.
func WithGRPCDialOptions ¶ added in v2.0.2
func WithGRPCDialOptions(grpcDialOptions ...grpc.DialOption) Opt
WithGRPCDialOptions is used to set the grpc.DialOption.
func WithSecurity ¶
WithSecurity is used to set the security config.
type RPCClient ¶
RPCClient is RPC client struct. TODO: Add flow control between RPC clients in TiDB ond RPC servers in TiKV. Since we use shared client connection to communicate to the same TiKV, it's possible that there are too many concurrent requests which overload the service of TiKV.
func NewRPCClient ¶
NewRPCClient creates a client that manages connections and rpc calls with tikv-servers.