dbconnpool

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2021 License: Apache-2.0 Imports: 12 Imported by: 5

Documentation

Overview

Package dbconnpool exposes a single DBConnection object with wrapped access to a single DB connection, and a ConnectionPool object to pool these DBConnections.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrConnPoolClosed is returned if the connection pool is closed.
	ErrConnPoolClosed = errors.New("connection pool is closed")
)

Functions

This section is empty.

Types

type ConnectionPool

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

ConnectionPool re-exposes ResourcePool as a pool of PooledDBConnection objects.

func NewConnectionPool

func NewConnectionPool(name string, capacity int, idleTimeout time.Duration, dnsResolutionFrequency time.Duration) *ConnectionPool

NewConnectionPool creates a new ConnectionPool. The name is used to publish stats only.

func (*ConnectionPool) Active

func (cp *ConnectionPool) Active() int64

Active returns the number of active connections in the pool

func (*ConnectionPool) Available

func (cp *ConnectionPool) Available() int64

Available returns the number of available connections in the pool

func (*ConnectionPool) Capacity

func (cp *ConnectionPool) Capacity() int64

Capacity returns the pool capacity.

func (*ConnectionPool) Close

func (cp *ConnectionPool) Close()

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

func (*ConnectionPool) Exhausted

func (cp *ConnectionPool) Exhausted() int64

Exhausted returns the number of times available went to zero for the pool.

func (*ConnectionPool) Get

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

func (*ConnectionPool) IdleClosed

func (cp *ConnectionPool) IdleClosed() int64

IdleClosed returns the number of closed connections for the pool.

func (*ConnectionPool) IdleTimeout

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

IdleTimeout returns the idle timeout for the pool.

func (*ConnectionPool) InUse

func (cp *ConnectionPool) InUse() int64

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

func (*ConnectionPool) MaxCap

func (cp *ConnectionPool) MaxCap() int64

MaxCap returns the maximum size of the pool

func (*ConnectionPool) Open

func (cp *ConnectionPool) Open(info dbconfigs.Connector)

Open must be called before starting to use the pool.

For instance: pool := dbconnpool.NewConnectionPool("name", 10, 30*time.Second) pool.Open(info) ... conn, err := pool.Get() ...

func (*ConnectionPool) Put

func (cp *ConnectionPool) Put(conn *PooledDBConnection)

Put puts a connection into the pool.

func (*ConnectionPool) SetCapacity

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

SetCapacity alters the size of the pool at runtime.

func (*ConnectionPool) SetIdleTimeout

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

SetIdleTimeout sets the idleTimeout on the pool.

func (*ConnectionPool) StatsJSON

func (cp *ConnectionPool) StatsJSON() string

StatsJSON returns the pool stats as a JSOn object.

func (*ConnectionPool) WaitCount

func (cp *ConnectionPool) WaitCount() int64

WaitCount returns how many clients are waiting for a connection

func (*ConnectionPool) WaitTime

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

WaitTime return the pool WaitTime.

type DBConnection

type DBConnection struct {
	*mysql.Conn
}

DBConnection re-exposes mysql.Conn with some wrapping to implement most of PoolConnection interface, except Recycle. That way it can be used by itself. (Recycle needs to know about the Pool).

func NewDBConnection

func NewDBConnection(ctx context.Context, info dbconfigs.Connector) (*DBConnection, error)

NewDBConnection returns a new DBConnection based on the ConnParams and will use the provided stats to collect timing.

func (*DBConnection) ExecuteFetch

func (dbc *DBConnection) ExecuteFetch(query string, maxrows int, wantfields bool) (*sqltypes.Result, error)

ExecuteFetch overwrites mysql.Conn.ExecuteFetch.

func (*DBConnection) ExecuteStreamFetch

func (dbc *DBConnection) ExecuteStreamFetch(query string, callback func(*sqltypes.Result) error, alloc func() *sqltypes.Result, streamBufferSize int) error

ExecuteStreamFetch overwrites mysql.Conn.ExecuteStreamFetch.

type PooledDBConnection

type PooledDBConnection struct {
	*DBConnection
	// contains filtered or unexported fields
}

PooledDBConnection re-exposes DBConnection to be used by ConnectionPool.

func (*PooledDBConnection) Reconnect

func (pc *PooledDBConnection) Reconnect(ctx context.Context) error

Reconnect replaces the existing underlying connection with a new one, if possible. Recycle should still be called afterwards.

func (*PooledDBConnection) Recycle

func (pc *PooledDBConnection) Recycle()

Recycle should be called to return the PooledDBConnection to the pool.

Jump to

Keyboard shortcuts

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