Merge pull request #105 from benbjohnson/db-config-fields
Expose additional DB configuration settings
This commit is contained in:
@@ -209,6 +209,11 @@ func ReadConfigFile(filename string) (_ Config, err error) {
|
||||
// DBConfig represents the configuration for a single database.
|
||||
type DBConfig struct {
|
||||
Path string `yaml:"path"`
|
||||
MonitorInterval *time.Duration `yaml:"monitor-interval"`
|
||||
CheckpointInterval *time.Duration `yaml:"checkpoint-interval"`
|
||||
MinCheckpointPageN *int `yaml:"min-checkpoint-page-count"`
|
||||
MaxCheckpointPageN *int `yaml:"max-checkpoint-page-count"`
|
||||
|
||||
Replicas []*ReplicaConfig `yaml:"replicas"`
|
||||
}
|
||||
|
||||
@@ -222,6 +227,20 @@ func NewDBFromConfig(dbc *DBConfig) (*litestream.DB, error) {
|
||||
// Initialize database with given path.
|
||||
db := litestream.NewDB(path)
|
||||
|
||||
// Override default database settings if specified in configuration.
|
||||
if dbc.MonitorInterval != nil {
|
||||
db.MonitorInterval = *dbc.MonitorInterval
|
||||
}
|
||||
if dbc.CheckpointInterval != nil {
|
||||
db.CheckpointInterval = *dbc.CheckpointInterval
|
||||
}
|
||||
if dbc.MinCheckpointPageN != nil {
|
||||
db.MinCheckpointPageN = *dbc.MinCheckpointPageN
|
||||
}
|
||||
if dbc.MaxCheckpointPageN != nil {
|
||||
db.MaxCheckpointPageN = *dbc.MaxCheckpointPageN
|
||||
}
|
||||
|
||||
// Instantiate and attach replicas.
|
||||
for _, rc := range dbc.Replicas {
|
||||
r, err := NewReplicaFromConfig(rc, db)
|
||||
|
||||
5
db.go
5
db.go
@@ -260,6 +260,11 @@ func (db *DB) PageSize() int {
|
||||
|
||||
// Open initializes the background monitoring goroutine.
|
||||
func (db *DB) Open() (err error) {
|
||||
// Validate fields on database.
|
||||
if db.MinCheckpointPageN <= 0 {
|
||||
return fmt.Errorf("minimum checkpoint page count required")
|
||||
}
|
||||
|
||||
// Validate that all replica names are unique.
|
||||
m := make(map[string]struct{})
|
||||
for _, r := range db.Replicas {
|
||||
|
||||
Reference in New Issue
Block a user