parent
2fe5e6b4f7
commit
00b2454c53
|
@ -34,6 +34,7 @@
|
|||
- [#4124](https://github.com/influxdb/influxdb/issues/4124): Missing defer/recover/panic idiom in HTTPD service
|
||||
- [#4238](https://github.com/influxdb/influxdb/pull/4238): Fully disable hinted-handoff service if so requested.
|
||||
- [#4165](https://github.com/influxdb/influxdb/pull/4165): Tag all Go runtime stats when writing to internal database.
|
||||
- [#4586](https://github.com/influxdb/influxdb/pull/4586): Exit when invalid engine is selected
|
||||
- [#4118](https://github.com/influxdb/influxdb/issues/4118): Return consistent, correct result for SHOW MEASUREMENTS with multiple AND conditions
|
||||
- [#4191](https://github.com/influxdb/influxdb/pull/4191): Correctly marshal remote mapper responses. Fixes [#4170](https://github.com/influxdb/influxdb/issues/4170)
|
||||
- [#4222](https://github.com/influxdb/influxdb/pull/4222): Graphite TCP connections should not block shutdown
|
||||
|
|
|
@ -108,12 +108,12 @@ func NewDemoConfig() (*Config, error) {
|
|||
func (c *Config) Validate() error {
|
||||
if c.Meta.Dir == "" {
|
||||
return errors.New("Meta.Dir must be specified")
|
||||
} else if c.Data.Dir == "" {
|
||||
return errors.New("Data.Dir must be specified")
|
||||
} else if c.HintedHandoff.Dir == "" {
|
||||
return errors.New("HintedHandoff.Dir must be specified")
|
||||
} else if c.Data.WALDir == "" {
|
||||
return errors.New("Data.WALDir must be specified")
|
||||
}
|
||||
|
||||
if err := c.Data.Validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, g := range c.Graphites {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package tsdb
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
@ -128,3 +130,24 @@ func NewConfig() Config {
|
|||
QueryLogEnabled: true,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Config) Validate() error {
|
||||
if c.Dir == "" {
|
||||
return errors.New("Data.Dir must be specified")
|
||||
} else if c.WALDir == "" {
|
||||
return errors.New("Data.WALDir must be specified")
|
||||
}
|
||||
|
||||
valid := false
|
||||
for _, e := range RegisteredEngines() {
|
||||
if e == c.Engine {
|
||||
valid = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !valid {
|
||||
return fmt.Errorf("unrecognized engine %s", c.Engine)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -63,6 +63,16 @@ func RegisterEngine(name string, fn NewEngineFunc) {
|
|||
newEngineFuncs[name] = fn
|
||||
}
|
||||
|
||||
// RegisteredEngines returns the slice of currently registered engines.
|
||||
func RegisteredEngines() []string {
|
||||
a := make([]string, 0, len(newEngineFuncs))
|
||||
for k, _ := range newEngineFuncs {
|
||||
a = append(a, k)
|
||||
}
|
||||
sort.Strings(a)
|
||||
return a
|
||||
}
|
||||
|
||||
// NewEngine returns an instance of an engine based on its format.
|
||||
// If the path does not exist then the DefaultFormat is used.
|
||||
func NewEngine(path string, walPath string, options EngineOptions) (Engine, error) {
|
||||
|
|
Loading…
Reference in New Issue