From a7bc03b42bad976f7f8ecc28ae909cb5229720f5 Mon Sep 17 00:00:00 2001 From: Yicheng Qin Date: Tue, 2 Dec 2014 23:20:21 -0800 Subject: [PATCH] etcdserver: close storage when stop --- etcdserver/server.go | 5 +++++ etcdserver/server_test.go | 1 + 2 files changed, 6 insertions(+) diff --git a/etcdserver/server.go b/etcdserver/server.go index d1fda20d9..e7da45089 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -111,6 +111,8 @@ type Storage interface { // remove it in this interface. // Cut cuts out a new wal file for saving new state and entries. Cut() error + // Close closes the Storage and performs finalization. + Close() error } type Server interface { @@ -396,6 +398,9 @@ func (s *EtcdServer) run() { defer func() { s.node.Stop() s.sendhub.Stop() + if err := s.storage.Close(); err != nil { + log.Panicf("etcdserver: close storage error: %v", err) + } close(s.done) }() for { diff --git a/etcdserver/server_test.go b/etcdserver/server_test.go index 1c12209d5..d6a89cdb4 100644 --- a/etcdserver/server_test.go +++ b/etcdserver/server_test.go @@ -1530,6 +1530,7 @@ func (p *storageRecorder) SaveSnap(st raftpb.Snapshot) error { } return nil } +func (p *storageRecorder) Close() error { return nil } type readyNode struct { readyc chan raft.Ready