rqlite

package
v1.6.2 Latest Latest
Warning

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

Go to latest
Published: May 2, 2025 License: MIT Imports: 36 Imported by: 0

Documentation

Overview

nolint

Command rqlited is the rqlite server.

Index

Constants

View Source
const (
	DiscoModeNone     = ""
	DiscoModeConsulKV = "consul-kv"
	DiscoModeEtcdKV   = "etcd-kv"
	DiscoModeDNS      = "dns"
	DiscoModeDNSSRV   = "dns-srv"

	HTTPAddrFlag    = "http-addr"
	HTTPAdvAddrFlag = "http-adv-addr"
	RaftAddrFlag    = "raft-addr"
	RaftAdvAddrFlag = "raft-adv-addr"

	HTTPx509CertFlag = "http-cert"
	HTTPx509KeyFlag  = "http-key"
	NodeX509CertFlag = "node-cert"
	NodeX509KeyFlag  = "node-key"
)

Variables

View Source
var (
	ErrNotRun = errors.New("rqlite runner is not initialized")
)

Functions

This section is empty.

Types

type BuildInfo

type BuildInfo struct {
	Version       string
	Commit        string
	Branch        string
	SQLiteVersion string
}

BuildInfo is build information for display at command line.

type Config

type Config struct {
	// DataPath is path to node data. Always set.
	DataPath string

	// ExtensionPaths is a comma-delimited list of path to SQLite extensions to be loaded.
	// Each element may be a directory path, zipfile, or tar.gz file. May not be set.
	ExtensionPaths StringSliceValue

	// HTTPAddr is the bind network address for the HTTP Server.
	// It never includes a trailing HTTP or HTTPS.
	HTTPAddr string

	// HTTPAdv is the advertised HTTP server network.
	HTTPAdv string

	// HTTPAllowOrigin is the value to set for Access-Control-Allow-Origin HTTP header.
	HTTPAllowOrigin string

	// AuthFile is the path to the authentication file. May not be set.
	AuthFile string `filepath:"true"`

	// AutoBackupFile is the path to the auto-backup file. May not be set.
	AutoBackupFile string `filepath:"true"`

	// AutoRestoreFile is the path to the auto-restore file. May not be set.
	AutoRestoreFile string `filepath:"true"`

	// HTTPx509CACert is the path to the CA certificate file for when this node verifies
	// other certificates for any HTTP communications. May not be set.
	HTTPx509CACert string `filepath:"true"`

	// HTTPx509Cert is the path to the X509 cert for the HTTP server. May not be set.
	HTTPx509Cert string `filepath:"true"`

	// HTTPx509Key is the path to the private key for the HTTP server. May not be set.
	HTTPx509Key string `filepath:"true"`

	// HTTPVerifyClient indicates whether the HTTP server should verify client certificates.
	HTTPVerifyClient bool

	// NodeX509CACert is the path to the CA certificate file for when this node verifies
	// other certificates for any inter-node communications. May not be set.
	NodeX509CACert string `filepath:"true"`

	// NodeX509Cert is the path to the X509 cert for the Raft server. May not be set.
	NodeX509Cert string `filepath:"true"`

	// NodeX509Key is the path to the X509 key for the Raft server. May not be set.
	NodeX509Key string `filepath:"true"`

	// NoNodeVerify disables checking other nodes' Node X509 certs for validity.
	NoNodeVerify bool

	// NodeVerifyClient enable mutual TLS for node-to-node communication.
	NodeVerifyClient bool

	// NodeVerifyServerName is the hostname to verify on the certificates returned by nodes.
	// If NoNodeVerify is true this field is ignored.
	NodeVerifyServerName string

	// NodeID is the Raft ID for the node.
	NodeID string

	// RaftAddr is the bind network address for the Raft server.
	RaftAddr string

	// RaftAdv is the advertised Raft server address.
	RaftAdv string

	// JoinAddrs is the list of Raft addresses to use for a join attempt.
	JoinAddrs string

	// JoinAttempts is the number of times a node should attempt to join using a
	// given address.
	JoinAttempts int

	// JoinInterval is the time between retrying failed join operations.
	JoinInterval time.Duration

	// JoinAs sets the user join attempts should be performed as. May not be set.
	JoinAs string

	// BootstrapExpect is the minimum number of nodes required for a bootstrap.
	BootstrapExpect int

	// BootstrapExpectTimeout is the maximum time a bootstrap operation can take.
	BootstrapExpectTimeout time.Duration

	// DiscoMode sets the discovery mode. May not be set.
	DiscoMode string

	// DiscoKey sets the discovery prefix key.
	DiscoKey string

	// DiscoConfig sets the path to any discovery configuration file. May not be set.
	DiscoConfig string

	// OnDiskPath sets the path to the SQLite file. May not be set.
	OnDiskPath string

	// FKConstraints enables SQLite foreign key constraints.
	FKConstraints bool

	// AutoVacInterval sets the automatic VACUUM interval. Use 0s to disable.
	AutoVacInterval time.Duration

	// AutoOptimizeInterval sets the automatic optimization interval. Use 0s to disable.
	AutoOptimizeInterval time.Duration

	// RaftLogLevel sets the minimum logging level for the Raft subsystem.
	RaftLogLevel string

	// RaftNonVoter controls whether this node is a voting, read-only node.
	RaftNonVoter bool

	// RaftSnapThreshold is the number of outstanding log entries that trigger snapshot.
	RaftSnapThreshold uint64

	// RaftSnapThreshold is the size of a SQLite WAL file which will trigger a snapshot.
	RaftSnapThresholdWALSize uint64

	// RaftSnapInterval sets the threshold check interval.
	RaftSnapInterval time.Duration

	// RaftLeaderLeaseTimeout sets the leader lease timeout.
	RaftLeaderLeaseTimeout time.Duration

	// RaftHeartbeatTimeout specifies the time in follower state without contact
	// from a Leader before the node attempts an election.
	RaftHeartbeatTimeout time.Duration

	// RaftElectionTimeout specifies the time in candidate state without contact
	// from a Leader before the node attempts an election.
	RaftElectionTimeout time.Duration

	// RaftApplyTimeout sets the Log-apply timeout.
	RaftApplyTimeout time.Duration

	// RaftShutdownOnRemove sets whether Raft should be shutdown if the node is removed
	RaftShutdownOnRemove bool

	// RaftClusterRemoveOnShutdown sets whether the node should remove itself from the cluster on shutdown
	RaftClusterRemoveOnShutdown bool

	// RaftStepdownOnShutdown sets whether Leadership should be relinquished on shutdown
	RaftStepdownOnShutdown bool

	// RaftReapNodeTimeout sets the duration after which a non-reachable voting node is
	// reaped i.e. removed from the cluster.
	RaftReapNodeTimeout time.Duration

	// RaftReapReadOnlyNodeTimeout sets the duration after which a non-reachable non-voting node is
	// reaped i.e. removed from the cluster.
	RaftReapReadOnlyNodeTimeout time.Duration

	// ClusterConnectTimeout sets the timeout when initially connecting to another node in
	// the cluster, for non-Raft communications.
	ClusterConnectTimeout time.Duration

	// WriteQueueCap is the default capacity of Execute queues
	WriteQueueCap int

	// WriteQueueBatchSz is the default batch size for Execute queues
	WriteQueueBatchSz int

	// WriteQueueTimeout is the default time after which any data will be sent on
	// Execute queues, if a batch size has not been reached.
	WriteQueueTimeout time.Duration

	// WriteQueueTx controls whether writes from the queue are done within a transaction.
	WriteQueueTx bool

	// CPUProfile enables CPU profiling.
	CPUProfile string

	// MemProfile enables memory profiling.
	MemProfile string

	// TraceProfile enables trace profiling.
	TraceProfile string
}

Config represents the configuration as set by command-line flags. All variables will be set, unless explicit noted.

func ParseFlags

func ParseFlags(name, desc string, build *BuildInfo) (*Config, error)

ParseFlags parses the command line, and returns the configuration.

func (*Config) CheckDirPaths

func (c *Config) CheckDirPaths() error

CheckDirPaths checks that all directory paths in the config exist and are directories. Empty directory paths are ignored.

func (*Config) CheckFilePaths

func (c *Config) CheckFilePaths() error

CheckFilePaths checks that all file paths in the config exist. Empty filepaths are ignored.

func (*Config) DiscoConfigReader

func (c *Config) DiscoConfigReader() io.ReadCloser

DiscoConfigReader returns a ReadCloser providing access to the Disco config. The caller must call close on the ReadCloser when finished with it. If no config was supplied, it returns nil.

func (*Config) HTTPURL

func (c *Config) HTTPURL() string

HTTPURL returns the fully-formed, advertised HTTP API address for this config, including protocol, host and port.

func (*Config) JoinAddresses

func (c *Config) JoinAddresses() []string

JoinAddresses returns the join addresses set at the command line. Returns nil if no join addresses were set.

func (*Config) RaftPort

func (c *Config) RaftPort() int

RaftPort returns the port on which the Raft system is listening. Validate must have been called before calling this method.

func (*Config) Validate

func (c *Config) Validate() error

Validate checks the configuration for internal consistency, and activates important rqlite policies. It must be called at least once on a Config object before the Config object is used. It is OK to call more than once.

type Rqlite

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

func New

func New(
	cfg *config.Config,
	internalClientCredential *client.BasicAuth,
	credentials []auth.Credential,
) *Rqlite

func (*Rqlite) Close

func (r *Rqlite) Close() error

func (*Rqlite) Dsn

func (r *Rqlite) Dsn() string

func (*Rqlite) InternalClientCredential

func (r *Rqlite) InternalClientCredential() *client.BasicAuth

func (*Rqlite) IsLeader

func (r *Rqlite) IsLeader() bool

func (*Rqlite) LocalHttpAddr

func (r *Rqlite) LocalHttpAddr() string

func (*Rqlite) Run

func (r *Rqlite) Run(ctx context.Context) error

func (*Rqlite) SqlDB

func (r *Rqlite) SqlDB() (*sql.DB, error)

func (*Rqlite) WaitForLeader

func (r *Rqlite) WaitForLeader(timeout time.Duration) error

type StringSliceValue

type StringSliceValue []string

StringSlice is a slice of strings which implments the flag.Value interface.

func (*StringSliceValue) Set

func (s *StringSliceValue) Set(value string) error

Set sets the value of the slice.

func (*StringSliceValue) String

func (s *StringSliceValue) String() string

String returns a string representation of the slice.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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