Merge pull request #532 from philips/remove-info-file

feat(config): remove the info file
release-0.4
Brandon Philips 2014-02-05 16:21:27 -08:00
commit 1c6a41dda4
3 changed files with 17 additions and 77 deletions

View File

@ -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()

33
etcd.go
View File

@ -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)

View File

@ -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"`
}