Преглед изворни кода

etcdsever: avoid creating member dir before finishing validate bootstrap

This commit fixes the issue of creating member dir before validating
the configuration. When member dir exists, it indicates the local etcd
process is a valid etcd member. So we should only create member dir
after we finish configuration validation, joining validation or
discovery validation.
Xiang Li пре 10 година
родитељ
комит
aef55342d1
1 измењених фајлова са 5 додато и 5 уклоњено
  1. 5 5
      etcdserver/server.go

+ 5 - 5
etcdserver/server.go

@@ -217,11 +217,6 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
 		return nil, err
 		return nil, err
 	}
 	}
 
 
-	err = os.MkdirAll(cfg.MemberDir(), privateDirMode)
-	if err != nil && err != os.ErrExist {
-		return nil, err
-	}
-
 	haveWAL := wal.Exist(cfg.WALDir())
 	haveWAL := wal.Exist(cfg.WALDir())
 	ss := snap.New(cfg.SnapDir())
 	ss := snap.New(cfg.SnapDir())
 
 
@@ -328,6 +323,11 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
 		return nil, fmt.Errorf("unsupported bootstrap config")
 		return nil, fmt.Errorf("unsupported bootstrap config")
 	}
 	}
 
 
+	err = os.MkdirAll(cfg.MemberDir(), privateDirMode)
+	if err != nil && err != os.ErrExist {
+		return nil, err
+	}
+
 	sstats := &stats.ServerStats{
 	sstats := &stats.ServerStats{
 		Name: cfg.Name,
 		Name: cfg.Name,
 		ID:   id.String(),
 		ID:   id.String(),