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
- func NewShardError(in error, target *querypb.Target, tablet *topodatapb.Tablet, ...) error
- func RegisterCreator(name string, gc Creator)
- func WaitForTablets(gw Gateway, tabletTypesToWait []topodatapb.TabletType) error
- type Creator
- type Gateway
- type ShardError
- type TabletCacheStatus
- type TabletCacheStatusList
- type TabletStatusAggregator
Constants ¶
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 ¶
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) 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.