dbreplaccessor

package
v0.0.0-...-56cb166 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2025 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

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 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.

func NewApp

func NewApp(driverName string) (DBApp, error)

NewApp creates a new type for opening dqlite databases for a given driver name.

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

type NewAppFunc func(driverName string) (DBApp, error)

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

NewNodeManagerFunc creates a NodeManager

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)
}

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.

Jump to

Keyboard shortcuts

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