go-vitess.v1: gopkg.in/src-d/go-vitess.v1/vt/vttablet/tabletserver/connpool Index | Files

package connpool

import "gopkg.in/src-d/go-vitess.v1/vt/vttablet/tabletserver/connpool"

Index

Package Files

dbconn.go pool.go

Variables

var ErrConnPoolClosed = vterrors.New(vtrpcpb.Code_INTERNAL, "internal error: unexpected: conn pool is closed")

ErrConnPoolClosed is returned when the connection pool is closed.

type BinlogFormat Uses

type BinlogFormat int

BinlogFormat is used for specifying the binlog format.

const (
    BinlogFormatStatement BinlogFormat = iota
    BinlogFormatRow
    BinlogFormatMixed
)

The following constants specify the possible binlog format values.

type DBConn Uses

type DBConn struct {
    // contains filtered or unexported fields
}

DBConn is a db connection for tabletserver. It performs automatic reconnects as needed. Its Execute function has a timeout that can kill its own queries and the underlying connection. It will also trigger a CheckMySQL whenever applicable.

func NewDBConn Uses

func NewDBConn(
    cp *Pool,
    appParams *mysql.ConnParams) (*DBConn, error)

NewDBConn creates a new DBConn. It triggers a CheckMySQL if creation fails.

func NewDBConnNoPool Uses

func NewDBConnNoPool(params *mysql.ConnParams, dbaPool *dbconnpool.ConnectionPool) (*DBConn, error)

NewDBConnNoPool creates a new DBConn without a pool.

func (*DBConn) Close Uses

func (dbc *DBConn) Close()

Close closes the DBConn.

func (*DBConn) Current Uses

func (dbc *DBConn) Current() string

Current returns the currently executing query.

func (*DBConn) Exec Uses

func (dbc *DBConn) Exec(ctx context.Context, query string, maxrows int, wantfields bool) (*sqltypes.Result, error)

Exec executes the specified query. If there is a connection error, it will reconnect and retry. A failed reconnect will trigger a CheckMySQL.

func (*DBConn) ExecOnce Uses

func (dbc *DBConn) ExecOnce(ctx context.Context, query string, maxrows int, wantfields bool) (*sqltypes.Result, error)

ExecOnce executes the specified query, but does not retry on connection errors.

func (*DBConn) ID Uses

func (dbc *DBConn) ID() int64

ID returns the connection id.

func (*DBConn) IsClosed Uses

func (dbc *DBConn) IsClosed() bool

IsClosed returns true if DBConn is closed.

func (*DBConn) Kill Uses

func (dbc *DBConn) Kill(reason string, elapsed time.Duration) error

Kill kills the currently executing query both on MySQL side and on the connection side. If no query is executing, it's a no-op. Kill will also not kill a query more than once.

func (*DBConn) Recycle Uses

func (dbc *DBConn) Recycle()

Recycle returns the DBConn to the pool.

func (*DBConn) Stream Uses

func (dbc *DBConn) Stream(ctx context.Context, query string, callback func(*sqltypes.Result) error, streamBufferSize int, includedFields querypb.ExecuteOptions_IncludedFields) error

Stream executes the query and streams the results.

func (*DBConn) VerifyMode Uses

func (dbc *DBConn) VerifyMode(strictTransTables bool) (BinlogFormat, error)

VerifyMode is a helper method to verify mysql is running with sql_mode = STRICT_TRANS_TABLES or STRICT_ALL_TABLES and autocommit=ON. It also returns the current binlog format.

type MySQLChecker Uses

type MySQLChecker interface {
    CheckMySQL()
}

MySQLChecker defines the CheckMySQL interface that lower level objects can use to call back into TabletServer.

type Pool Uses

type Pool struct {
    // contains filtered or unexported fields
}

Pool implements a custom connection pool for tabletserver. It's similar to dbconnpool.ConnPool, but the connections it creates come with built-in ability to kill in-flight queries. These connections also trigger a CheckMySQL call if we fail to connect to MySQL. Other than the connection type, ConnPool maintains an additional pool of dba connections that are used to kill connections.

func New Uses

func New(
    name string,
    capacity int,
    idleTimeout time.Duration,
    checker MySQLChecker) *Pool

New creates a new Pool. The name is used to publish stats only.

func (*Pool) Active Uses

func (cp *Pool) Active() int64

Active returns the number of active connections in the pool

func (*Pool) Available Uses

func (cp *Pool) Available() int64

Available returns the number of available connections in the pool

func (*Pool) Capacity Uses

func (cp *Pool) Capacity() int64

Capacity returns the pool capacity.

func (*Pool) Close Uses

func (cp *Pool) Close()

Close will close the pool and wait for connections to be returned before exiting.

func (*Pool) Get Uses

func (cp *Pool) Get(ctx context.Context) (*DBConn, error)

Get returns a connection. You must call Recycle on DBConn once done.

func (*Pool) IdleClosed Uses

func (cp *Pool) IdleClosed() int64

IdleClosed returns the number of closed connections for the pool.

func (*Pool) IdleTimeout Uses

func (cp *Pool) IdleTimeout() time.Duration

IdleTimeout returns the idle timeout for the pool.

func (*Pool) InUse Uses

func (cp *Pool) InUse() int64

InUse returns the number of in-use connections in the pool

func (*Pool) MaxCap Uses

func (cp *Pool) MaxCap() int64

MaxCap returns the maximum size of the pool

func (*Pool) Open Uses

func (cp *Pool) Open(appParams, dbaParams, appDebugParams *mysql.ConnParams)

Open must be called before starting to use the pool.

func (*Pool) Put Uses

func (cp *Pool) Put(conn *DBConn)

Put puts a connection into the pool.

func (*Pool) SetCapacity Uses

func (cp *Pool) SetCapacity(capacity int) (err error)

SetCapacity alters the size of the pool at runtime.

func (*Pool) SetIdleTimeout Uses

func (cp *Pool) SetIdleTimeout(idleTimeout time.Duration)

SetIdleTimeout sets the idleTimeout on the pool.

func (*Pool) StatsJSON Uses

func (cp *Pool) StatsJSON() string

StatsJSON returns the pool stats as a JSON object.

func (*Pool) WaitCount Uses

func (cp *Pool) WaitCount() int64

WaitCount returns how many clients are waiting for a connection

func (*Pool) WaitTime Uses

func (cp *Pool) WaitTime() time.Duration

WaitTime return the pool WaitTime.

Package connpool imports 18 packages (graph) and is imported by 5 packages. Updated 2019-06-13. Refresh now. Tools for package owners.