gateway

package
v2.1.0-alpha.1+incompa... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2016 License: BSD-3-Clause Imports: 24 Imported by: 0

Documentation

Overview

Package gateway contains the routing layer of vtgate. A Gateway can take a query targeted to a keyspace/shard/tablet_type and send it off.

Index

Constants

View Source
const (

	// StatusTemplate is the display part to use to show
	// a TabletCacheStatusList.
	StatusTemplate = `` /* 836-byte string literal not displayed */

)

Variables

This section is empty.

Functions

func NewShardError

func NewShardError(in error, target *querypb.Target, tablet *topodatapb.Tablet, inTransaction bool) error

NewShardError returns a ShardError which preserves the original error code if possible, adds the connection context and adds a bit to determine whether the keyspace/shard needs to be re-resolved for a potential sharding event (namely, if we were in a transaction).

func RegisterCreator

func RegisterCreator(name string, gc Creator)

RegisterCreator registers a Creator with given name.

func WaitForTablets

func WaitForTablets(gw Gateway, tabletTypesToWait []topodatapb.TabletType) error

WaitForTablets is a helper method to wait for the provided tablets, up until the *initialTabletTimeout. It will log what it is doing. Note it has the same name as the Gateway's interface method, as it just calls it.

Types

type Creator

type Creator func(hc discovery.HealthCheck, topoServer topo.Server, serv topo.SrvTopoServer, cell string, retryCount int) Gateway

Creator is the factory method which can create the actual gateway object.

func GetCreator

func GetCreator() Creator

GetCreator returns the Creator specified by the gateway_implementation flag.

type Gateway

type Gateway interface {
	tabletconn.TabletConn

	// WaitForTablets asks the gateway to wait for the provided
	// tablets types to be available. It the context is canceled
	// before the end, it should return ctx.Err().
	WaitForTablets(ctx context.Context, tabletTypesToWait []topodatapb.TabletType) error

	// CacheStatus returns a list of TabletCacheStatus per tablet.
	CacheStatus() TabletCacheStatusList
}

A Gateway is the query processing module for each shard, which is used by ScatterConn.

type ShardError

type ShardError struct {
	// ShardIdentifier is the keyspace+shard.
	ShardIdentifier string
	// InTransaction indicates if it is inside a transaction.
	InTransaction bool
	// Err preserves the original error, so that we don't need to parse the error string.
	Err error
	// ErrorCode is the error code to use for all the tablet errors in aggregate
	ErrorCode vtrpcpb.ErrorCode
}

ShardError is the error about a specific shard. It implements vterrors.VtError.

func (*ShardError) Error

func (e *ShardError) Error() string

Error returns the error string.

func (*ShardError) VtErrorCode

func (e *ShardError) VtErrorCode() vtrpcpb.ErrorCode

VtErrorCode returns the underlying Vitess error code. This is part of vterrors.VtError interface.

type TabletCacheStatus

type TabletCacheStatus struct {
	Keyspace   string
	Shard      string
	TabletType topodatapb.TabletType
	Name       string
	Addr       string

	QueryCount uint64
	QueryError uint64
	QPS        uint64
	AvgLatency float64 // in milliseconds
}

TabletCacheStatus contains the status per destination for a gateway.

type TabletCacheStatusList

type TabletCacheStatusList []*TabletCacheStatus

TabletCacheStatusList is a slice of TabletCacheStatus.

func (TabletCacheStatusList) Len

func (gtcsl TabletCacheStatusList) Len() int

Len is part of sort.Interface.

func (TabletCacheStatusList) Less

func (gtcsl TabletCacheStatusList) Less(i, j int) bool

Less is part of sort.Interface.

func (TabletCacheStatusList) Swap

func (gtcsl TabletCacheStatusList) Swap(i, j int)

Swap is part of sort.Interface.

type TabletStatusAggregator

type TabletStatusAggregator struct {
	Keyspace   string
	Shard      string
	TabletType topodatapb.TabletType
	Name       string // the alternative name of a tablet
	Addr       string // the host:port of a tablet

	QueryCount uint64
	QueryError uint64
	// contains filtered or unexported fields
}

TabletStatusAggregator tracks tablet status for a gateway.

func NewTabletStatusAggregator

func NewTabletStatusAggregator(keyspace, shard string, tabletType topodatapb.TabletType, name string) *TabletStatusAggregator

NewTabletStatusAggregator creates a TabletStatusAggregator.

func (*TabletStatusAggregator) GetCacheStatus

func (tsa *TabletStatusAggregator) GetCacheStatus() *TabletCacheStatus

GetCacheStatus returns a TabletCacheStatus representing the current gateway status.

func (*TabletStatusAggregator) UpdateQueryInfo

func (tsa *TabletStatusAggregator) UpdateQueryInfo(addr string, tabletType topodatapb.TabletType, elapsed time.Duration, hasError bool)

UpdateQueryInfo updates the aggregator with the given information about a query.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL