Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultDialFunc(ctx context.Context, address string) (net.Conn, error)
- func DefaultLogFunc(l LogLevel, format string, a ...interface{})
- type Client
- func (c *Client) Add(ctx context.Context, node NodeInfo) error
- func (c *Client) Assign(ctx context.Context, id uint64, role NodeRole) error
- func (c *Client) Close() error
- func (c *Client) Cluster(ctx context.Context) ([]NodeInfo, error)
- func (c *Client) Describe(ctx context.Context) (*NodeMetadata, error)
- func (c *Client) Dump(ctx context.Context, dbname string) ([]File, error)
- func (c *Client) Leader(ctx context.Context) (*NodeInfo, error)
- func (c *Client) Remove(ctx context.Context, id uint64) error
- func (c *Client) Transfer(ctx context.Context, id uint64) error
- func (c *Client) Weight(ctx context.Context, weight uint64) error
- type DatabaseNodeStore
- type DialFunc
- type File
- type InmemNodeStore
- type LogFunc
- type LogLevel
- type NodeInfo
- type NodeMetadata
- type NodeRole
- type NodeStore
- type NodeStoreOption
- type Option
- type YamlNodeStore
Constants ¶
Node roles
const ( LogNone = logging.None LogDebug = logging.Debug LogInfo = logging.Info LogWarn = logging.Warn LogError = logging.Error )
Available logging levels.
Variables ¶
var NewInmemNodeStore = protocol.NewInmemNodeStore
NewInmemNodeStore creates NodeStore which stores its data in-memory.
Functions ¶
func DefaultDialFunc ¶
DefaultDialFunc is the default dial function, which can handle plain TCP and Unix socket endpoints. You can customize it with WithDialFunc()
func DefaultLogFunc ¶
DefaultLogFunc doesn't emit any message.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client speaks the dqlite wire protocol.
func FindLeader ¶
FindLeader returns a Client connected to the current cluster leader.
The function will iterate through to all nodes in the given store, and for each of them check if it's the current leader. If no leader is found, the function will keep retrying (with a capped exponential backoff) until the given context is canceled.
func (*Client) Add ¶
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 ¶ added in v1.3.0
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) Describe ¶ added in v1.8.1
func (c *Client) Describe(ctx context.Context) (*NodeMetadata, error)
Describe returns metadata about the node we're connected with.
func (*Client) Dump ¶
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").
type DatabaseNodeStore ¶
type DatabaseNodeStore struct {
// contains filtered or unexported fields
}
DatabaseNodeStore persists a list addresses of dqlite nodes in a SQL table.
func NewNodeStore ¶
func NewNodeStore(db *sql.DB, schema, table, column string, options ...NodeStoreOption) *DatabaseNodeStore
NewNodeStore creates a new NodeStore.
type InmemNodeStore ¶
type InmemNodeStore = protocol.InmemNodeStore
InmemNodeStore keeps the list of target dqlite nodes in memory.
type NodeMetadata ¶ added in v1.8.1
NodeMetadata user-defined node-level metadata.
type 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.
func DefaultNodeStore ¶
DefaultNodeStore creates a new NodeStore using the given filename.
If the filename ends with ".yaml" then the YamlNodeStore implementation will be used. Otherwise the SQLite-based one will be picked, with default names for the schema, table and column parameters.
It also creates the table if it doesn't exist yet.
type NodeStoreOption ¶ added in v1.3.0
type NodeStoreOption func(*nodeStoreOptions)
Option that can be used to tweak node store parameters.
func WithNodeStoreWhereClause ¶ added in v1.3.0
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 ¶
type Option func(*options)
Option that can be used to tweak client parameters.
func WithDialFunc ¶
WithDialFunc sets a custom dial function for creating the client network connection.
func WithLogFunc ¶
WithLogFunc sets a custom log function. connection.
type YamlNodeStore ¶ added in v1.5.0
type YamlNodeStore struct {
// contains filtered or unexported fields
}
Persists a list addresses of dqlite nodes in a YAML file.
func NewYamlNodeStore ¶ added in v1.5.0
func NewYamlNodeStore(path string) (*YamlNodeStore, error)
NewYamlNodeStore creates a new YamlNodeStore backed by the given YAML file.