Documentation
¶
Index ¶
- func Manifold(config ManifoldConfig) dependency.Manifold
- func NewWorker(cfg WorkerConfig) (*dbReplWorker, error)
- type ClusterIntrospector
- type DBApp
- type DBGetter
- type ManifoldConfig
- type NewAppFunc
- type NewDBReplWorkerFunc
- type NewNodeManagerFunc
- type Node
- type NodeManager
- type TrackedDB
- type TrackedDBWorkerOption
- type WorkerConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Manifold ¶
func Manifold(config ManifoldConfig) dependency.Manifold
Manifold returns a dependency manifold that runs the dbaccessor worker, using the resource names defined in the supplied config.
func NewWorker ¶
func NewWorker(cfg WorkerConfig) (*dbReplWorker, error)
NewWorker creates a new dbaccessor worker.
Types ¶
type ClusterIntrospector ¶
type ClusterIntrospector interface {
// DescribeCluster returns a description of the cluster.
DescribeCluster(ctx context.Context) ([]Node, error)
}
ClusterIntrospector is an interface that provides methods to introspect the cluster state.
type DBApp ¶
type DBApp interface {
// Open the dqlite database with the given name
Open(context.Context, string) (*sql.DB, error)
}
DBApp describes methods of a Dqlite database application, required to run this host as a Dqlite node.
type DBGetter ¶
type DBGetter interface {
// GetDB returns a sql.DB reference for the dqlite-backed database that
// contains the data for the specified namespace.
// A NotFound error is returned if the worker is unaware of the requested DB.
GetDB(namespace string) (database.TxnRunner, error)
}
DBGetter describes the ability to supply a sql.DB reference for a particular database.
type ManifoldConfig ¶
type ManifoldConfig struct {
AgentName string
Clock clock.Clock
Logger logger.Logger
NewApp NewAppFunc
NewDBReplWorker NewDBReplWorkerFunc
NewNodeManager NewNodeManagerFunc
}
ManifoldConfig contains: - The names of other manifolds on which the DB accessor depends. - Other dependencies from ManifoldsConfig required by the worker.
func (ManifoldConfig) Validate ¶
func (cfg ManifoldConfig) Validate() error
type NewAppFunc ¶
NewAppFunc creates a new Dqlite application.
type NewDBReplWorkerFunc ¶
type NewDBReplWorkerFunc func(context.Context, DBApp, string, ...TrackedDBWorkerOption) (TrackedDB, error)
NewDBReplWorkerFunc creates a tracked db worker.
type NewNodeManagerFunc ¶
type NewNodeManagerFunc func(agent.Config, logger.Logger, coredatabase.SlowQueryLogger) NodeManager
NewNodeManagerFunc creates a NodeManager
type Node ¶
type Node struct {
// ID is the node's unique identifier.
ID uint64
// Address is the node's address.
Address string
// Role is the node's role in the cluster.
Role string
}
Node represents a node in the cluster.
type NodeManager ¶
type NodeManager interface {
// EnsureDataDir ensures that a directory for Dqlite data exists at
// a path determined by the agent config, then returns that path.
EnsureDataDir() (string, error)
// DqliteSQLDriver returns a Dqlite SQL driver that can be used to connect
// to the Dqlite cluster. This is a read only connection, which is intended
// to be used for running queries against the Dqlite cluster (REPL).
DqliteSQLDriver(ctx context.Context) (driver.Driver, error)
// LeaderClient returns a Dqlite client that is connected to the leader
// of the Dqlite cluster. This client can be used to run queries directly
// against the leader node, which is useful for administrative tasks or
// for running queries that require a consistent view of the data.
LeaderClient(ctx context.Context) (*client.Client, error)
}
NodeManager creates Dqlite `App` initialisation arguments and options.
func CAASNodeManager ¶
func CAASNodeManager(cfg agent.Config, logger logger.Logger, slowQueryLogger coredatabase.SlowQueryLogger) NodeManager
CAASNodeManager returns a NodeManager that is configured to use the loopback address for Dqlite.
func IAASNodeManager ¶
func IAASNodeManager(cfg agent.Config, logger logger.Logger, slowQueryLogger coredatabase.SlowQueryLogger) NodeManager
IAASNodeManager returns a NodeManager that is configured to use the cloud-local TLS terminated address for Dqlite.
type TrackedDB ¶
type TrackedDB interface {
coredatabase.TxnRunner
worker.Worker
}
TrackedDB defines the union of a TxnRunner and a worker.Worker interface. This is local to the package, allowing for better testing of the underlying trackedDB worker.
func NewTrackedDBWorker ¶
func NewTrackedDBWorker( ctx context.Context, dbApp DBApp, namespace string, opts ...TrackedDBWorkerOption, ) (TrackedDB, error)
NewTrackedDBWorker creates a new TrackedDBWorker
type TrackedDBWorkerOption ¶
type TrackedDBWorkerOption func(*trackedDBWorker)
TrackedDBWorkerOption is a function that configures a TrackedDBWorker.
func WithClock ¶
func WithClock(clock clock.Clock) TrackedDBWorkerOption
WithClock sets the clock used by the worker.
func WithLogger ¶
func WithLogger(logger logger.Logger) TrackedDBWorkerOption
WithLogger sets the logger used by the worker.
type WorkerConfig ¶
type WorkerConfig struct {
NodeManager NodeManager
Clock clock.Clock
Logger logger.Logger
NewApp NewAppFunc
NewDBReplWorker NewDBReplWorkerFunc
}
WorkerConfig encapsulates the configuration options for the dbaccessor worker.
func (*WorkerConfig) Validate ¶
func (c *WorkerConfig) Validate() error
Validate ensures that the config values are valid.