backend

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2018 License: GPL-3.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MockBackendConfigDefault

func MockBackendConfigDefault(name, addr string) *config.BackendConfig

MockBackendConfigDefault mocks new backend config.

func MockTxnMgr

func MockTxnMgr(log *xlog.Log, n int) (*fakedb.DB, *TxnManager, map[string]*Pool, *Pool, []string, func())

MockTxnMgr mocks txn manager.

Types

type BackupTxn

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

BackupTxn tuple.

func NewBackupTxn

func NewBackupTxn(log *xlog.Log, txid uint64, mgr *TxnManager, backup *Pool) (*BackupTxn, error)

NewBackupTxn creates the new BackupTxn.

func (*BackupTxn) Abort

func (txn *BackupTxn) Abort() error

Abort used to abort all txn connections.

func (*BackupTxn) Begin

func (txn *BackupTxn) Begin() error

Begin not implemented.

func (*BackupTxn) Commit

func (txn *BackupTxn) Commit() error

Commit not implemented.

func (*BackupTxn) Execute

func (txn *BackupTxn) Execute(req *xcontext.RequestContext) (*sqltypes.Result, error)

Execute not implemented.

func (*BackupTxn) ExecuteRaw

func (txn *BackupTxn) ExecuteRaw(database string, query string) (*sqltypes.Result, error)

ExecuteRaw used to execute the query to the backup node. If the backup node is not exists, fetchBackupConnection will return with an error.

func (*BackupTxn) Finish

func (txn *BackupTxn) Finish() error

Finish used to finish a transaction. If the lastErr is nil, we will recycle all the twopc connections to the pool for reuse, otherwise we wil close all of the them.

func (*BackupTxn) Rollback

func (txn *BackupTxn) Rollback() error

Rollback not implemented.

func (*BackupTxn) SetMaxResult

func (txn *BackupTxn) SetMaxResult(max int)

SetMaxResult used to set the txn max result.

func (*BackupTxn) SetTimeout

func (txn *BackupTxn) SetTimeout(timeout int)

SetTimeout used to set the txn timeout.

func (*BackupTxn) State

func (txn *BackupTxn) State() int32

State returns txn.state.

func (*BackupTxn) TxID

func (txn *BackupTxn) TxID() uint64

TxID returns txn id.

func (*BackupTxn) XID

func (txn *BackupTxn) XID() string

XID returns empty.

func (*BackupTxn) XaState

func (txn *BackupTxn) XaState() int32

XaState returns txn xastate.

type Connection

type Connection interface {
	ID() uint32
	Dial() error
	Ping() error
	Close()
	Closed() bool
	LastErr() error
	UseDB(string) error
	Kill(string) error
	Recycle()
	Address() string
	SetTimestamp(int64)
	Timestamp() int64
	Execute(string) (*sqltypes.Result, error)
	ExecuteStreamFetch(string) (driver.Rows, error)
	ExecuteWithLimits(query string, timeout int, maxmem int) (*sqltypes.Result, error)
}

Connection tuple.

func MockClient

func MockClient(log *xlog.Log, addr string) (Connection, func())

MockClient mocks a client connection.

func MockClientWithConfig

func MockClientWithConfig(log *xlog.Log, conf *config.BackendConfig) (Connection, func())

MockClientWithConfig mocks a client with backendconfig.

func NewConnection

func NewConnection(log *xlog.Log, pool *Pool) Connection

NewConnection creates a new connection.

type Pool

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

Pool tuple.

func NewPool

func NewPool(log *xlog.Log, conf *config.BackendConfig) *Pool

NewPool creates the new Pool.

func (*Pool) Close

func (p *Pool) Close()

Close used to close the pool.

func (*Pool) Get

func (p *Pool) Get() (Connection, error)

Get used to get a connection from the pool.

func (*Pool) JSON

func (p *Pool) JSON() string

JSON returns the available string. available is the number of currently unused connections.

func (*Pool) Put

func (p *Pool) Put(conn Connection)

Put used to put a connection to pool.

type QueryDetail

type QueryDetail struct {
	ID uint64
	// contains filtered or unexported fields
}

QueryDetail is a simple wrapper for Query

func NewQueryDetail

func NewQueryDetail(conn Connection, query string) *QueryDetail

NewQueryDetail creates a new QueryDetail

type QueryDetailzRow

type QueryDetailzRow struct {
	Start    time.Time
	Duration time.Duration
	ConnID   uint32
	Query    string
	Address  string
	Color    string
}

QueryDetailzRow is used for rendering QueryDetail in a template

type Queryz

type Queryz struct {
	ID uint64
	// contains filtered or unexported fields
}

Queryz holds a thread safe list of QueryDetails

func NewQueryz

func NewQueryz() *Queryz

NewQueryz creates a new Queryz

func (*Queryz) Add

func (qz *Queryz) Add(qd *QueryDetail)

Add adds a QueryDetail to Queryz

func (*Queryz) GetQueryzRows

func (qz *Queryz) GetQueryzRows() []QueryDetailzRow

GetQueryzRows returns a list of QueryDetailzRow sorted by start time

func (*Queryz) Remove

func (qz *Queryz) Remove(qd *QueryDetail)

Remove removes a QueryDetail from Queryz

type Scatter

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

Scatter tuple.

func MockScatter

func MockScatter(log *xlog.Log, n int) (*Scatter, *fakedb.DB, func())

MockScatter used to mock a scatter.

func NewScatter

func NewScatter(log *xlog.Log, metadir string) *Scatter

NewScatter creates a new scatter.

func (*Scatter) Add

func (scatter *Scatter) Add(config *config.BackendConfig) error

Add used to add a new backend to scatter.

func (*Scatter) AddBackup

func (scatter *Scatter) AddBackup(config *config.BackendConfig) error

AddBackup used to add the backup node to scatter.

func (*Scatter) BackendConfigsClone

func (scatter *Scatter) BackendConfigsClone() []*config.BackendConfig

BackendConfigsClone used to clone all the backend configs.

func (*Scatter) Backends

func (scatter *Scatter) Backends() []string

Backends returns all backends.

func (*Scatter) BackupBackend

func (scatter *Scatter) BackupBackend() string

BackupBackend returns the backup name.

func (*Scatter) BackupConfig

func (scatter *Scatter) BackupConfig() *config.BackendConfig

BackupConfig returns the config of backup. Used for backup rebuild.

func (*Scatter) BackupPool

func (scatter *Scatter) BackupPool() *Pool

BackupPool returns the backup pool.

func (*Scatter) Close

func (scatter *Scatter) Close()

Close used to clean the pools connections.

func (*Scatter) CreateBackupTransaction

func (scatter *Scatter) CreateBackupTransaction() (*BackupTxn, error)

CreateBackupTransaction used to create a backup transaction.

func (*Scatter) CreateTransaction

func (scatter *Scatter) CreateTransaction() (*Txn, error)

CreateTransaction used to create a transaction.

func (*Scatter) FlushConfig

func (scatter *Scatter) FlushConfig() error

FlushConfig used to write the backends to file.

func (*Scatter) HasBackup

func (scatter *Scatter) HasBackup() bool

HasBackup used to check the backup node whether nil.

func (*Scatter) LoadConfig

func (scatter *Scatter) LoadConfig() error

LoadConfig used to load all backends from metadir/backend.json file.

func (*Scatter) MySQLStats

func (scatter *Scatter) MySQLStats() *stats.Timings

MySQLStats returns the mysql stats.

func (*Scatter) PoolClone

func (scatter *Scatter) PoolClone() map[string]*Pool

PoolClone used to copy backends to new map.

func (*Scatter) QueryRates

func (scatter *Scatter) QueryRates() *stats.Rates

QueryRates returns the query rates.

func (*Scatter) QueryStats

func (scatter *Scatter) QueryStats() *stats.Timings

QueryStats returns the query stats.

func (*Scatter) Queryz

func (scatter *Scatter) Queryz() *Queryz

Queryz returns the queryz.

func (*Scatter) Remove

func (scatter *Scatter) Remove(config *config.BackendConfig) error

Remove used to remove a backend from the scatter.

func (*Scatter) RemoveBackup

func (scatter *Scatter) RemoveBackup(config *config.BackendConfig) error

RemoveBackup used to remove the backup from the scatter.

func (*Scatter) TxnCounters

func (scatter *Scatter) TxnCounters() *stats.Counters

TxnCounters returns the txn counters.

func (*Scatter) Txnz

func (scatter *Scatter) Txnz() *Txnz

Txnz returns the txnz.

type Transaction

type Transaction interface {
	XID() string
	TxID() uint64
	State() int32
	XaState() int32
	Abort() error

	Begin() error
	Rollback() error
	Commit() error
	Finish() error

	SetTimeout(timeout int)
	SetMaxResult(max int)

	Execute(req *xcontext.RequestContext) (*sqltypes.Result, error)
	ExecuteRaw(database string, query string) (*sqltypes.Result, error)
}

Transaction interface.

type Txn

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

Txn tuple.

func NewTxn

func NewTxn(log *xlog.Log, txid uint64, mgr *TxnManager, backends map[string]*Pool) (*Txn, error)

NewTxn creates the new Txn.

func (*Txn) Abort

func (txn *Txn) Abort() error

Abort used to abort all txn connections.

func (*Txn) Begin

func (txn *Txn) Begin() error

Begin used to start a XA transaction. Begin only does: 1. set twopc to true

func (*Txn) Commit

func (txn *Txn) Commit() error

Commit does: 1. XA END 2. XA PREPARE 3. XA COMMIT

func (*Txn) Execute

func (txn *Txn) Execute(req *xcontext.RequestContext) (*sqltypes.Result, error)

Execute used to execute the query. If the txn is in twopc mode, we do the xaStart before the real query execute.

func (*Txn) ExecuteOnThisBackend

func (txn *Txn) ExecuteOnThisBackend(backend string, query string) (*sqltypes.Result, error)

ExecuteOnThisBackend used to send the query to this backend.

func (*Txn) ExecuteRaw

func (txn *Txn) ExecuteRaw(database string, query string) (*sqltypes.Result, error)

ExecuteRaw used to execute raw query, txn not implemented.

func (*Txn) ExecuteScatter

func (txn *Txn) ExecuteScatter(query string) (*sqltypes.Result, error)

ExecuteScatter used to execute query on all shards.

func (*Txn) ExecuteSingle

func (txn *Txn) ExecuteSingle(query string) (*sqltypes.Result, error)

ExecuteSingle used to execute query on one shard.

func (*Txn) ExecuteStreamFetch

func (txn *Txn) ExecuteStreamFetch(req *xcontext.RequestContext, callback func(*sqltypes.Result) error, streamBufferSize int) error

ExecuteStreamFetch used to execute stream fetch query.

func (*Txn) Finish

func (txn *Txn) Finish() error

Finish used to finish a transaction. If the lastErr is nil, we will recycle all the twopc connections to the pool for reuse, otherwise we wil close all of the them.

func (*Txn) Rollback

func (txn *Txn) Rollback() error

Rollback used to rollback a XA transaction. 1. XA ROLLBACK

func (*Txn) SetMaxResult

func (txn *Txn) SetMaxResult(max int)

SetMaxResult used to set the txn max result.

func (*Txn) SetTimeout

func (txn *Txn) SetTimeout(timeout int)

SetTimeout used to set the txn timeout.

func (*Txn) State

func (txn *Txn) State() int32

State returns txn.state.

func (*Txn) TxID

func (txn *Txn) TxID() uint64

TxID returns txn id.

func (*Txn) XID

func (txn *Txn) XID() string

XID returns txn xid.

func (*Txn) XaState

func (txn *Txn) XaState() int32

XaState returns txn xastate.

type TxnDetail

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

TxnDetail is a simple wrapper for Query

func NewTxnDetail

func NewTxnDetail(txn Transaction) *TxnDetail

NewTxnDetail creates a new TxnDetail

type TxnDetailzRow

type TxnDetailzRow struct {
	Start    time.Time
	Duration time.Duration
	TxnID    uint64
	XAID     string
	Query    string
	State    string
	XaState  string
	Color    string
}

TxnDetailzRow is used for rendering TxnDetail in a template

type TxnManager

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

TxnManager tuple.

func NewTxnManager

func NewTxnManager(log *xlog.Log) *TxnManager

NewTxnManager creates new TxnManager.

func (*TxnManager) Add

func (mgr *TxnManager) Add() error

Add used to add a txn to mgr.

func (*TxnManager) CommitLock

func (mgr *TxnManager) CommitLock()

CommitLock used to acquire the commit.

func (*TxnManager) CommitRLock

func (mgr *TxnManager) CommitRLock()

CommitRLock used to acquire the read lock of commit.

func (*TxnManager) CommitRUnlock

func (mgr *TxnManager) CommitRUnlock()

CommitRUnlock used to release the read lock of commit.

func (*TxnManager) CommitUnlock

func (mgr *TxnManager) CommitUnlock()

CommitUnlock used to release the commit.

func (*TxnManager) CreateBackupTxn

func (mgr *TxnManager) CreateBackupTxn(backup *Pool) (*BackupTxn, error)

CreateBackupTxn creates new backup txn.

func (*TxnManager) CreateTxn

func (mgr *TxnManager) CreateTxn(backends map[string]*Pool) (*Txn, error)

CreateTxn creates new txn.

func (*TxnManager) GetID

func (mgr *TxnManager) GetID() uint64

GetID returns a new txnid.

func (*TxnManager) Remove

func (mgr *TxnManager) Remove() error

Remove used to remove a txn from mgr.

type Txnz

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

Txnz holds a thread safe list of TxnDetails

func NewTxnz

func NewTxnz() *Txnz

NewTxnz creates a new Txnz

func (*Txnz) Add

func (tz *Txnz) Add(td *TxnDetail)

Add adds a TxnDetail to Txnz

func (*Txnz) GetTxnzRows

func (tz *Txnz) GetTxnzRows() []TxnDetailzRow

GetTxnzRows returns a list of TxnDetailzRow sorted by start time

func (*Txnz) Remove

func (tz *Txnz) Remove(td *TxnDetail)

Remove removes a TxnDetail from Txnz

Jump to

Keyboard shortcuts

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