embed: only get initial cluster setting if the member is not init

release-3.0
Xiang Li 2016-07-13 16:02:49 -07:00 committed by Gyu-Ho Lee
parent 34c76a47c1
commit f7ec7f025b
2 changed files with 40 additions and 3 deletions

View File

@ -194,9 +194,16 @@ func startEtcdOrProxyV2() {
// startEtcd launches the etcd server and HTTP handlers for client/server communication.
func startEtcd(cfg *config) (<-chan struct{}, error) {
urlsmap, token, err := getPeerURLsMapAndToken(cfg, "etcd")
if err != nil {
return nil, fmt.Errorf("error setting up initial cluster: %v", err)
var (
urlsmap types.URLsMap
token string
err error
)
if !isMemberInitialized(cfg) {
urlsmap, token, err = getPeerURLsMapAndToken(cfg, "etcd")
if err != nil {
return nil, fmt.Errorf("error setting up initial cluster: %v", err)
}
}
if cfg.PeerAutoTLS && cfg.peerTLSInfo.Empty() {

30
etcdmain/util.go Normal file
View File

@ -0,0 +1,30 @@
// Copyright 2016 The etcd Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package etcdmain
import (
"path"
"github.com/coreos/etcd/wal"
)
func isMemberInitialized(cfg *config) bool {
waldir := cfg.WalDir
if waldir == "" {
waldir = path.Join(cfg.Dir, "member", "wal")
}
return wal.Exist(waldir)
}