From 891ddcba6ecd6b1bdde77d89476a2d6560f085dc Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Sun, 26 Jun 2016 20:14:43 -0700 Subject: [PATCH] etcdserver: refuse to restart if backend file is missing --- etcdserver/server.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/etcdserver/server.go b/etcdserver/server.go index 379257c43..11c58b33f 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -247,7 +247,10 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) { plog.Fatalf("create snapshot directory error: %v", err) } ss := snap.New(cfg.SnapDir()) - be := backend.NewDefaultBackend(path.Join(cfg.SnapDir(), databaseFilename)) + + bepath := path.Join(cfg.SnapDir(), databaseFilename) + beExist := fileutil.Exist(bepath) + be := backend.NewDefaultBackend(bepath) defer func() { if err != nil { be.Close() @@ -351,6 +354,10 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) { cl.SetStore(st) cl.SetBackend(be) cl.Recover() + if cl.Version() != nil && cl.Version().LessThan(semver.Version{Major: 3}) && !beExist { + os.RemoveAll(bepath) + return nil, fmt.Errorf("database file (%v) of the backend is missing", bepath) + } default: return nil, fmt.Errorf("unsupported bootstrap config") }