diff --git a/etcdserver/config.go b/etcdserver/config.go index decb5c1d0..982dc72b2 100644 --- a/etcdserver/config.go +++ b/etcdserver/config.go @@ -119,6 +119,8 @@ func (c *ServerConfig) WALDir() string { func (c *ServerConfig) SnapDir() string { return path.Join(c.MemberDir(), "snap") } +func (c *ServerConfig) StorageDir() string { return path.Join(c.MemberDir(), "storage") } + func (c *ServerConfig) ShouldDiscover() bool { return c.DiscoveryURL != "" } // ReqTimeout returns timeout for request to finish. diff --git a/etcdserver/server.go b/etcdserver/server.go index 98b5f0d1b..4ba52ba27 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -62,6 +62,8 @@ const ( purgeFileInterval = 30 * time.Second monitorVersionInterval = 5 * time.Second + + databaseFilename = "db" ) var ( @@ -181,8 +183,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) { var id types.ID var cl *cluster - demoFile := path.Join(cfg.MemberDir(), "v3demo") - if !cfg.V3demo && fileutil.Exist(demoFile) { + if !cfg.V3demo && fileutil.Exist(path.Join(cfg.StorageDir(), databaseFilename)) { return nil, errors.New("experimental-v3demo cannot be disabled once it is enabled") } @@ -330,7 +331,11 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) { } if cfg.V3demo { - srv.kv = dstorage.New(demoFile) + err = os.MkdirAll(cfg.StorageDir(), privateDirMode) + if err != nil && err != os.ErrExist { + return nil, err + } + srv.kv = dstorage.New(path.Join(cfg.StorageDir(), databaseFilename)) } // TODO: move transport initialization near the definition of remote