Ver código fonte

Merge pull request #7966 from heyitsanthony/close-kv-err

etcdserver: close mvcc.KV on init error path
Anthony Romano 8 anos atrás
pai
commit
8d2b340629
1 arquivos alterados com 9 adições e 0 exclusões
  1. 9 0
      etcdserver/server.go

+ 9 - 0
etcdserver/server.go

@@ -450,6 +450,15 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
 			plog.Warningf("consistent index never saved (snapshot index=%d)", snapshot.Metadata.Index)
 		}
 	}
+	newSrv := srv // since srv == nil in defer if srv is returned as nil
+	defer func() {
+		// closing backend without first closing kv can cause
+		// resumed compactions to fail with closed tx errors
+		if err != nil {
+			newSrv.kv.Close()
+		}
+	}()
+
 	srv.consistIndex.setConsistentIndex(srv.kv.ConsistentIndex())
 	tp, err := auth.NewTokenProvider(cfg.AuthToken,
 		func(index uint64) <-chan struct{} {