gateway

package
v1.8.0 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2019 License: Apache-2.0 Imports: 22 Imported by: 3

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 = `` /* 845-byte string literal not displayed */

)

Variables

View Source
var (

	// KeyspacesToWatch - if provided this specifies which keyspaces should be
	// visible to a vtgate. By default the vtgate will allow access to any
	// keyspace.
	KeyspacesToWatch flagutil.StringListValue
)

Functions

func NewShardError

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

NewShardError returns a new error with the shard info amended.

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(ctx context.Context, hc discovery.HealthCheck, serv srvtopo.Server, 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 {
	// TODO(alainjobart) The QueryService part of this interface
	// will be removed soon, in favor of the TargetStats part (that
	// returns a QueryService)
	queryservice.QueryService

	// srvtopo.TargetStats allows this Gateway to resolve a Target
	// into a QueryService. It is used by the srvtopo.Resolver object.
	srvtopo.TargetStats

	// 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().
	// The error returned will have specific effects:
	// - nil: keep going with startup.
	// - context.DeadlineExceeded: log a warning that we didn't get
	//   all tablets, and keep going with startup.
	// - any other error: log.Fatalf out.
	WaitForTablets(ctx context.Context, tabletTypesToWait []topodatapb.TabletType) error

	// RegisterStats registers exported stats for the gateway
	RegisterStats()

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

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

type TabletCacheStatus

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

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

TabletCacheStatus contains the status per destination for a gateway.

func (*TabletCacheStatus) FormattedQPS

func (tcs *TabletCacheStatus) FormattedQPS() string

FormattedQPS shows a 2 digit rounded value of QPS. Used in the HTML template above.

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