Browse Source

etcdserver: collapse dir configuration to DataDir

Jonathan Boulle 11 years ago
parent
commit
e5f5fcff48
2 changed files with 17 additions and 15 deletions
  1. 16 7
      etcdserver/server.go
  2. 1 8
      main.go

+ 16 - 7
etcdserver/server.go

@@ -6,6 +6,8 @@ import (
 	"log"
 	"math/rand"
 	"net/http"
+	"os"
+	"path"
 	"sync/atomic"
 	"time"
 
@@ -21,9 +23,12 @@ import (
 )
 
 const (
+	// owner can make/remove files inside the directory
+	privateDirMode = 0700
+
 	defaultSyncTimeout = time.Second
 	DefaultSnapCount   = 10000
-	// TODO: calculated based on heartbeat interval
+	// TODO: calculate based on heartbeat interval
 	defaultPublishRetryInterval = 5 * time.Second
 )
 
@@ -82,9 +87,8 @@ type RaftTimer interface {
 type ServerConfig struct {
 	Name       string
 	ClientURLs types.URLs
-	SnapDir    string
+	DataDir    string
 	SnapCount  int64
-	WalDir     string
 	Cluster    *Cluster
 	Transport  *http.Transport
 }
@@ -97,13 +101,18 @@ func NewServer(cfg *ServerConfig) *EtcdServer {
 		// Should never happen
 		log.Fatalf("could not find name %v in cluster!", cfg.Name)
 	}
+	snapdir := path.Join(cfg.DataDir, "snap")
+	if err := os.MkdirAll(snapdir, privateDirMode); err != nil {
+		log.Fatalf("etcdserver: cannot create snapshot directory: %v", err)
+	}
+	ss := snap.New(snapdir)
 	st := store.New()
-	ss := snap.New(cfg.SnapDir)
 	var w *wal.WAL
 	var n raft.Node
 	var err error
-	if !wal.Exist(cfg.WalDir) {
-		if w, err = wal.Create(cfg.WalDir); err != nil {
+	waldir := path.Join(cfg.DataDir, "wal")
+	if !wal.Exist(waldir) {
+		if w, err = wal.Create(waldir); err != nil {
 			log.Fatal(err)
 		}
 		n = raft.StartNode(m.ID, cfg.Cluster.IDs(), 10, 1)
@@ -120,7 +129,7 @@ func NewServer(cfg *ServerConfig) *EtcdServer {
 		}
 
 		// restart a node from previous wal
-		if w, err = wal.OpenAtIndex(cfg.WalDir, index); err != nil {
+		if w, err = wal.OpenAtIndex(waldir, index); err != nil {
 			log.Fatal(err)
 		}
 		wid, st, ents, err := w.ReadAll()

+ 1 - 8
main.go

@@ -6,7 +6,6 @@ import (
 	"log"
 	"net/http"
 	"os"
-	"path"
 	"strings"
 	"time"
 
@@ -129,11 +128,6 @@ func startEtcd() {
 	if err := os.MkdirAll(*dir, privateDirMode); err != nil {
 		log.Fatalf("main: cannot create data directory: %v", err)
 	}
-	snapdir := path.Join(*dir, "snap")
-	if err := os.MkdirAll(snapdir, privateDirMode); err != nil {
-		log.Fatalf("main: cannot create snapshot directory: %v", err)
-	}
-	waldir := path.Join(*dir, "wal")
 
 	pt, err := transport.NewTransport(peerTLSInfo)
 	if err != nil {
@@ -147,9 +141,8 @@ func startEtcd() {
 	cfg := &etcdserver.ServerConfig{
 		Name:       *name,
 		ClientURLs: acurls,
-		SnapDir:    snapdir,
+		DataDir:    *dir,
 		SnapCount:  int64(*snapCount),
-		WalDir:     waldir,
 		Cluster:    cluster,
 		Transport:  pt,
 	}