Documentation ¶
Index ¶
Constants ¶
const ( ERR_NORMAL = iota ERR_RETRY ERR_FATAL ERR_TX_POOL_FULL ERR_NOT_IN_TX )
const ( ConnClosed = OperationalError("vttablet: Connection Closed") Cancelled = OperationalError("vttablet: Context Cancelled") )
Variables ¶
var ( // TabletProtocol is exported for unit tests TabletProtocol = flag.String("tablet_protocol", "grpc", "how to talk to the vttablets") )
Functions ¶
func RegisterDialer ¶
func RegisterDialer(name string, dialer TabletDialer)
RegisterDialer is meant to be used by TabletDialer implementations to self register.
Types ¶
type OperationalError ¶
type OperationalError string
OperationalError represents an error due to a failure to communicate with vttablet.
func (OperationalError) Error ¶
func (e OperationalError) Error() string
type ServerError ¶
ServerError represents an error that was returned from a vttablet server.
func (*ServerError) Error ¶
func (e *ServerError) Error() string
type TabletConn ¶
type TabletConn interface { // Execute executes a non-streaming query on vttablet. Execute(ctx context.Context, query string, bindVars map[string]interface{}, transactionId int64) (*mproto.QueryResult, error) // ExecuteBatch executes a group of queries. ExecuteBatch(ctx context.Context, queries []tproto.BoundQuery, asTransaction bool, transactionId int64) (*tproto.QueryResultList, error) // StreamExecute executes a streaming query on vttablet. It returns a channel, ErrFunc and error. // If error is non-nil, it means that the StreamExecute failed to send the request. Otherwise, // you can pull values from the channel till it's closed. Following this, you can call ErrFunc // to see if the stream ended normally or due to a failure. StreamExecute(ctx context.Context, query string, bindVars map[string]interface{}, transactionId int64) (<-chan *mproto.QueryResult, ErrFunc, error) // Transaction support Begin(ctx context.Context) (transactionId int64, err error) Commit(ctx context.Context, transactionId int64) error Rollback(ctx context.Context, transactionId int64) error // These should not be used for anything except tests for now; they will eventually // replace the existing methods. Execute2(ctx context.Context, query string, bindVars map[string]interface{}, transactionId int64) (*mproto.QueryResult, error) ExecuteBatch2(ctx context.Context, queries []tproto.BoundQuery, asTransaction bool, transactionId int64) (*tproto.QueryResultList, error) Begin2(ctx context.Context) (transactionId int64, err error) Commit2(ctx context.Context, transactionId int64) error Rollback2(ctx context.Context, transactionId int64) error StreamExecute2(ctx context.Context, query string, bindVars map[string]interface{}, transactionId int64) (<-chan *mproto.QueryResult, ErrFunc, error) // Close must be called for releasing resources. Close() // SetTarget can be called to change the target used for // subsequent calls. Can only be called if tabletType was not // set to UNKNOWN in TabletDialer. SetTarget(keyspace, shard string, tabletType pbt.TabletType) error // GetEndPoint returns the end point info. EndPoint() *pbt.EndPoint // SplitQuery splits a query into equally sized smaller queries by // appending primary key range clauses to the original query SplitQuery(ctx context.Context, query tproto.BoundQuery, splitColumn string, splitCount int) ([]tproto.QuerySplit, error) // StreamHealth streams StreamHealthResponse to the client StreamHealth(ctx context.Context) (<-chan *pb.StreamHealthResponse, ErrFunc, error) }
TabletConn defines the interface for a vttablet client. It should not be concurrently used across goroutines.
type TabletDialer ¶
type TabletDialer func(ctx context.Context, endPoint *pbt.EndPoint, keyspace, shard string, tabletType pbt.TabletType, timeout time.Duration) (TabletConn, error)
TabletDialer represents a function that will return a TabletConn object that can communicate with a tablet.
We support two modes of operation: 1 - using GetSessionId (right after dialing) to get a sessionId. 2 - using Target with each call (and never calling GetSessionId). If tabletType is set to UNKNOWN, we'll use mode 1. Mode 1 is being deprecated.
func GetDialer ¶
func GetDialer() TabletDialer
GetDialer returns the dialer to use, described by the command line flag