diff --git a/etcdserver/etcdhttp/http_test.go b/etcdserver/etcdhttp/http_test.go index 962e91a1f..46ebfe7b4 100644 --- a/etcdserver/etcdhttp/http_test.go +++ b/etcdserver/etcdhttp/http_test.go @@ -712,8 +712,8 @@ func (fs *errServer) Do(ctx context.Context, r etcdserverpb.Request) (etcdserver func (fs *errServer) Process(ctx context.Context, m raftpb.Message) error { return fs.err } -func (fs *errServer) Start(m etcdserver.Member) {} -func (fs *errServer) Stop() {} +func (fs *errServer) Start() {} +func (fs *errServer) Stop() {} // errReader implements io.Reader to facilitate a broken request. type errReader struct{} @@ -838,7 +838,7 @@ func (rs *resServer) Do(_ context.Context, _ etcdserverpb.Request) (etcdserver.R return rs.res, nil } func (rs *resServer) Process(_ context.Context, _ raftpb.Message) error { return nil } -func (rs *resServer) Start(m etcdserver.Member) {} +func (rs *resServer) Start() {} func (rs *resServer) Stop() {} func mustMarshalEvent(t *testing.T, ev *store.Event) string { diff --git a/etcdserver/server.go b/etcdserver/server.go index 1052a20da..03736a0dc 100644 --- a/etcdserver/server.go +++ b/etcdserver/server.go @@ -59,7 +59,7 @@ type Server interface { // begin serving requests. It must be called before Do or Process. // Start must be non-blocking; any long-running server functionality // should be implemented in goroutines. - Start(m Member) + Start() // Stop terminates the Server and performs any necessary finalization. // Do and Process cannot be called after Stop has been invoked. Stop() @@ -80,6 +80,9 @@ type EtcdServer struct { w wait.Wait done chan struct{} + Name string + ClientURLs []string + Node raft.Node Store store.Store @@ -105,8 +108,10 @@ type EtcdServer struct { // Start prepares and starts server in a new goroutine. It is no longer safe to // modify a server's fields after it has been sent to Start. // It also starts a goroutine to publish its server information. -func (s *EtcdServer) Start(m Member) { +func (s *EtcdServer) Start() { s.start() + m := *s.ClusterStore.Get().FindName(s.Name) + m.ClientURLs = s.ClientURLs go s.publish(m, defaultPublishRetryInterval) } diff --git a/main.go b/main.go index 5cd98e5df..33bcbe668 100644 --- a/main.go +++ b/main.go @@ -193,8 +193,10 @@ func startEtcd() { cls := etcdserver.NewClusterStore(st, *cluster) s := &etcdserver.EtcdServer{ - Store: st, - Node: n, + Name: *name, + ClientURLs: *addrs, + Store: st, + Node: n, Storage: struct { *wal.WAL *snap.Snapshotter @@ -205,9 +207,7 @@ func startEtcd() { SnapCount: *snapCount, ClusterStore: cls, } - member := *self - member.ClientURLs = *addrs - s.Start(member) + s.Start() ch := &pkg.CORSHandler{ Handler: etcdhttp.NewClientHandler(s, cls, *timeout),