From 1c91c167fc98608ef850a7539550bfc15dedbb46 Mon Sep 17 00:00:00 2001 From: Brandon Philips Date: Wed, 5 Feb 2014 09:58:10 -0800 Subject: [PATCH] feat(config): remove the info file The info file was meant to help the user from accidently making a mistake but often times it just confuses people: https://github.com/coreos/etcd/issues/356 https://github.com/coreos/etcd/issues/531 https://github.com/coreos/etcd/issues/318 Lets remove the info file for this next release. --- config/config.go | 44 -------------------------------------------- etcd.go | 33 +++++++++++++++++---------------- server/info.go | 17 ----------------- 3 files changed, 17 insertions(+), 77 deletions(-) delete mode 100644 server/info.go diff --git a/config/config.go b/config/config.go index 983435a9b..633877394 100644 --- a/config/config.go +++ b/config/config.go @@ -1,7 +1,6 @@ package config import ( - "encoding/json" "flag" "fmt" "io/ioutil" @@ -379,9 +378,6 @@ func (c *Config) NameFromHostname() { // Reset removes all server configuration files. func (c *Config) Reset() error { - if err := os.RemoveAll(filepath.Join(c.DataDir, "info")); err != nil { - return err - } if err := os.RemoveAll(filepath.Join(c.DataDir, "log")); err != nil { return err } @@ -395,46 +391,6 @@ func (c *Config) Reset() error { return nil } -// Reads the info file from the file system or initializes it based on the config. -func (c *Config) Info() (*server.Info, error) { - info := &server.Info{} - path := filepath.Join(c.DataDir, "info") - - // Open info file and read it out. - f, err := os.Open(path) - if err != nil && !os.IsNotExist(err) { - return nil, err - } else if f != nil { - defer f.Close() - if err := json.NewDecoder(f).Decode(&info); err != nil { - return nil, err - } - return info, nil - } - - // If the file doesn't exist then initialize it. - info.Name = strings.TrimSpace(c.Name) - info.EtcdURL = c.Addr - info.EtcdListenHost = c.BindAddr - info.RaftURL = c.Peer.Addr - info.RaftListenHost = c.Peer.BindAddr - info.EtcdTLS = c.TLSInfo() - info.RaftTLS = c.PeerTLSInfo() - - // Write to file. - f, err = os.Create(path) - if err != nil { - return nil, err - } - defer f.Close() - - if err := json.NewEncoder(f).Encode(info); err != nil { - return nil, err - } - - return info, nil -} - // Sanitize cleans the input fields. func (c *Config) Sanitize() error { tlsConfig, err := c.TLSConfig() diff --git a/etcd.go b/etcd.go index 25455c60c..c63f71fb6 100644 --- a/etcd.go +++ b/etcd.go @@ -21,6 +21,7 @@ import ( "net" "net/http" "os" + "path/filepath" "runtime" "time" @@ -72,18 +73,18 @@ func main() { log.Fatalf("Unable to create path: %s", err) } - // Load info object. - info, err := config.Info() - if err != nil { - log.Fatal("info:", err) + // Warn people if they have an info file + info := filepath.Join(config.DataDir, "info") + if _, err := os.Stat(info); err == nil { + log.Warnf("All cached configuration is now ignored. The file %s can be removed.", info) } // Retrieve TLS configuration. - tlsConfig, err := info.EtcdTLS.Config() + tlsConfig, err := config.TLSInfo().Config() if err != nil { log.Fatal("Client TLS:", err) } - peerTLSConfig, err := info.RaftTLS.Config() + peerTLSConfig, err := config.PeerTLSInfo().Config() if err != nil { log.Fatal("Peer TLS:", err) } @@ -114,8 +115,8 @@ func main() { registry := server.NewRegistry(store) // Create stats objects - followersStats := server.NewRaftFollowersStats(info.Name) - serverStats := server.NewRaftServerStats(info.Name) + followersStats := server.NewRaftFollowersStats(config.Name) + serverStats := server.NewRaftServerStats(config.Name) // Calculate all of our timeouts heartbeatTimeout := time.Duration(config.Peer.HeartbeatTimeout) * time.Millisecond @@ -125,9 +126,9 @@ func main() { // Create peer server. psConfig := server.PeerServerConfig{ - Name: info.Name, + Name: config.Name, Scheme: peerTLSConfig.Scheme, - URL: info.RaftURL, + URL: config.Peer.Addr, SnapshotCount: config.SnapshotCount, MaxClusterSize: config.MaxClusterSize, RetryTimes: config.MaxRetryAttempts, @@ -136,9 +137,9 @@ func main() { var psListener net.Listener if psConfig.Scheme == "https" { - psListener, err = server.NewTLSListener(&tlsConfig.Server, info.RaftListenHost, info.RaftTLS.CertFile, info.RaftTLS.KeyFile) + psListener, err = server.NewTLSListener(&tlsConfig.Server, config.Peer.BindAddr, config.PeerTLSInfo().CertFile, config.PeerTLSInfo().KeyFile) } else { - psListener, err = server.NewListener(info.RaftListenHost) + psListener, err = server.NewListener(config.Peer.BindAddr) } if err != nil { panic(err) @@ -149,7 +150,7 @@ func main() { if psConfig.Scheme == "https" { raftTransporter.SetTLSConfig(peerTLSConfig.Client) } - raftServer, err := raft.NewServer(info.Name, config.DataDir, raftTransporter, store, ps, "") + raftServer, err := raft.NewServer(config.Name, config.DataDir, raftTransporter, store, ps, "") if err != nil { log.Fatal(err) } @@ -158,7 +159,7 @@ func main() { ps.SetRaftServer(raftServer) // Create client server. - s := server.New(info.Name, info.EtcdURL, ps, registry, store, &mb) + s := server.New(config.Name, config.Addr, ps, registry, store, &mb) if config.Trace() { s.EnableTracing() @@ -166,9 +167,9 @@ func main() { var sListener net.Listener if tlsConfig.Scheme == "https" { - sListener, err = server.NewTLSListener(&tlsConfig.Server, info.EtcdListenHost, info.EtcdTLS.CertFile, info.EtcdTLS.KeyFile) + sListener, err = server.NewTLSListener(&tlsConfig.Server, config.BindAddr, config.TLSInfo().CertFile, config.TLSInfo().KeyFile) } else { - sListener, err = server.NewListener(info.EtcdListenHost) + sListener, err = server.NewListener(config.BindAddr) } if err != nil { panic(err) diff --git a/server/info.go b/server/info.go deleted file mode 100644 index 7e05debe4..000000000 --- a/server/info.go +++ /dev/null @@ -1,17 +0,0 @@ -package server - -// Info describes the non-mutable state of the server upon initialization. -// These fields cannot be changed without deleting the server fields and -// reinitializing. -type Info struct { - Name string `json:"name"` - - RaftURL string `json:"raftURL"` - EtcdURL string `json:"etcdURL"` - - RaftListenHost string `json:"raftListenHost"` - EtcdListenHost string `json:"etcdListenHost"` - - RaftTLS TLSInfo `json:"raftTLS"` - EtcdTLS TLSInfo `json:"etcdTLS"` -}