Auto-create UDP service database

All other services operate like this, so make UDP service consistent.
pull/4379/head
Philip O'Toole 2015-10-08 19:12:20 -07:00
parent b88dd21581
commit f298e88b39
4 changed files with 17 additions and 1 deletions

View File

@ -292,6 +292,7 @@ func (s *Server) appendUDPService(c udp.Config) {
}
srv := udp.NewService(c)
srv.PointsWriter = s.PointsWriter
srv.MetaStore = s.MetaStore
s.Services = append(s.Services, srv)
}

View File

@ -235,7 +235,7 @@ reporting-disabled = false
[[udp]]
enabled = false
# bind-address = ""
# database = ""
# database = "udp"
# retention-policy = ""
# These next lines control how batching works. You should have this enabled

View File

@ -7,6 +7,9 @@ import (
)
const (
// DefaultDatabase is the default database for UDP traffic.
DefaultDatabase = "udp"
// DefaultBatchSize is the default UDP batch size.
DefaultBatchSize = 1000
@ -32,6 +35,9 @@ type Config struct {
// default values set.
func (c *Config) WithDefaults() *Config {
d := *c
if d.Database == "" {
d.Database = DefaultDatabase
}
if d.BatchSize == 0 {
d.BatchSize = DefaultBatchSize
}

View File

@ -12,6 +12,7 @@ import (
"github.com/influxdb/influxdb"
"github.com/influxdb/influxdb/cluster"
"github.com/influxdb/influxdb/meta"
"github.com/influxdb/influxdb/models"
"github.com/influxdb/influxdb/tsdb"
)
@ -49,6 +50,10 @@ type Service struct {
WritePoints(p *cluster.WritePointsRequest) error
}
MetaStore interface {
CreateDatabaseIfNotExists(name string) (*meta.DatabaseInfo, error)
}
Logger *log.Logger
statMap *expvar.Map
}
@ -77,6 +82,10 @@ func (s *Service) Open() (err error) {
return errors.New("database has to be specified in config")
}
if _, err := s.MetaStore.CreateDatabaseIfNotExists(s.config.Database); err != nil {
return errors.New("Failed to ensure target database exists")
}
s.addr, err = net.ResolveUDPAddr("udp", s.config.BindAddress)
if err != nil {
s.Logger.Printf("Failed to resolve UDP address %s: %s", s.config.BindAddress, err)