go-dqlite: github.com/canonical/go-dqlite/client Index | Files

package client

import "github.com/canonical/go-dqlite/client"


Package Files

client.go constants.go leader.go log.go store.go


const (
    Voter   = protocol.Voter
    StandBy = protocol.StandBy
    Spare   = protocol.Spare

Node roles

const (
    LogDebug = logging.Debug
    LogInfo  = logging.Info
    LogWarn  = logging.Warn
    LogError = logging.Error

Available logging levels.


var NewInmemNodeStore = protocol.NewInmemNodeStore

NewInmemNodeStore creates NodeStore which stores its data in-memory.

func DefaultDialFunc Uses

func DefaultDialFunc(ctx context.Context, address string) (net.Conn, error)

func DefaultLogFunc Uses

func DefaultLogFunc(l LogLevel, format string, a ...interface{})

DefaultLogFunc doesn't emit any message.

type Client Uses

type Client struct {
    // contains filtered or unexported fields

Client speaks the dqlite wire protocol.

func FindLeader Uses

func FindLeader(ctx context.Context, store NodeStore, options ...Option) (*Client, error)

FindLeader returns a Client connected to the current cluster leader, if any.

func New Uses

func New(ctx context.Context, address string, options ...Option) (*Client, error)

New creates a new client connected to the dqlite node with the given address.

func (*Client) Add Uses

func (c *Client) Add(ctx context.Context, node NodeInfo) error

Add a node to a cluster.

The new node will have the role specified in node.Role. Note that if the desired role is Voter, the node being added must be online, since it will be granted voting rights only once it catches up with the leader's log.

func (*Client) Assign Uses

func (c *Client) Assign(ctx context.Context, id uint64, role NodeRole) error

Assign a role to a node.

Possible roles are:

- Voter: the node will replicate data and participate in quorum. - StandBy: the node will replicate data but won't participate in quorum. - Spare: the node won't replicate data and won't participate in quorum.

If the target node does not exist or has already the desired role, an error is returned.

func (*Client) Close Uses

func (c *Client) Close() error

Close the client.

func (*Client) Cluster Uses

func (c *Client) Cluster(ctx context.Context) ([]NodeInfo, error)

Cluster returns information about all nodes in the cluster.

func (*Client) Dump Uses

func (c *Client) Dump(ctx context.Context, dbname string) ([]File, error)

Dump the content of the database with the given name. Two files will be returned, the first is the main database file (which has the same name as the database), the second is the WAL file (which has the same name as the database plus the suffix "-wal").

func (*Client) Leader Uses

func (c *Client) Leader(ctx context.Context) (*NodeInfo, error)

Leader returns information about the current leader, if any.

func (*Client) Remove Uses

func (c *Client) Remove(ctx context.Context, id uint64) error

Remove a node from the cluster.

func (*Client) Transfer Uses

func (c *Client) Transfer(ctx context.Context, id uint64) error

Transfer leadership from the current leader to another node.

This must be invoked one client connected to the current leader.

type DatabaseNodeStore Uses

type DatabaseNodeStore struct {
    // contains filtered or unexported fields

DatabaseNodeStore persists a list addresses of dqlite nodes in a SQL table.

func DefaultNodeStore Uses

func DefaultNodeStore(filename string) (*DatabaseNodeStore, error)

DefaultNodeStore creates a new NodeStore using the given filename to open a SQLite database, with default names for the schema, table and column parameters.

It also creates the table if it doesn't exist yet.

func NewNodeStore Uses

func NewNodeStore(db *sql.DB, schema, table, column string, options ...NodeStoreOption) *DatabaseNodeStore

NewNodeStore creates a new NodeStore.

func (*DatabaseNodeStore) Get Uses

func (d *DatabaseNodeStore) Get(ctx context.Context) ([]NodeInfo, error)

Get the current servers.

func (*DatabaseNodeStore) Set Uses

func (d *DatabaseNodeStore) Set(ctx context.Context, servers []NodeInfo) error

Set the servers addresses.

type DialFunc Uses

type DialFunc = protocol.DialFunc

DialFunc is a function that can be used to establish a network connection.

type File Uses

type File struct {
    Name string
    Data []byte

File holds the content of a single database file.

type InmemNodeStore Uses

type InmemNodeStore = protocol.InmemNodeStore

InmemNodeStore keeps the list of target dqlite nodes in memory.

type LogFunc Uses

type LogFunc = logging.Func

LogFunc is a function that can be used for logging.

type LogLevel Uses

type LogLevel = logging.Level

LogLevel defines the logging level.

type NodeInfo Uses

type NodeInfo = protocol.NodeInfo

NodeInfo holds information about a single server.

type NodeRole Uses

type NodeRole = protocol.NodeRole

NodeRole identifies the role of a node.

type NodeStore Uses

type NodeStore = protocol.NodeStore

NodeStore is used by a dqlite client to get an initial list of candidate dqlite nodes that it can dial in order to find a leader dqlite node to use.

type NodeStoreOption Uses

type NodeStoreOption func(*nodeStoreOptions)

Option that can be used to tweak node store parameters.

func WithNodeStoreWhereClause Uses

func WithNodeStoreWhereClause(where string) NodeStoreOption

WithNodeStoreWhereClause configures the node store to append the given hard-coded where clause to the SELECT query used to fetch nodes. Only the clause itself must be given, without the "WHERE" prefix.

type Option Uses

type Option func(*options)

Option that can be used to tweak client parameters.

func WithDialFunc Uses

func WithDialFunc(dial DialFunc) Option

WithDialFunc sets a custom dial function for creating the client network connection.

func WithLogFunc Uses

func WithLogFunc(log LogFunc) Option

WithLogFunc sets a custom log function. connection.

Package client imports 11 packages (graph) and is imported by 15 packages. Updated 2020-03-31. Refresh now. Tools for package owners.