etcd: attach default scheme to the peer-list if scheme is not given

This commit is contained in:
Xiang Li 2014-08-15 14:33:38 -07:00 committed by Yicheng Qin
parent cc1df691cc
commit c1c2aeffab
2 changed files with 37 additions and 1 deletions

View File

@ -166,7 +166,17 @@ func (s *Server) Run() error {
}
log.Printf("id=%x server.run source=-discovery seeds=\"%v\"\n", s.id, seeds)
} else {
seeds = s.cfg.Peers
for _, p := range s.cfg.Peers {
u, err := url.Parse(p)
if err != nil {
log.Printf("id=%x server.run err=%q", err)
continue
}
if u.Scheme == "" {
u.Scheme = s.cfg.PeerTLSInfo().Scheme()
}
seeds = append(seeds, u.String())
}
log.Printf("id=%x server.run source=-peers seeds=\"%v\"\n", s.id, seeds)
}
s.peerHub.setSeeds(seeds)

View File

@ -18,6 +18,7 @@ package etcd
import (
"math/rand"
"net/url"
"reflect"
"testing"
"time"
@ -103,6 +104,31 @@ func TestJoinThroughFollower(t *testing.T) {
}
}
func TestJoinWithoutHTTPScheme(t *testing.T) {
bt := &testServer{}
bt.Start()
cl := testCluster{nodes: []*testServer{bt}}
seed := bt.URL
u, err := url.Parse(seed)
if err != nil {
t.Fatal(err)
}
// remove HTTP scheme
seed = u.Host + u.Path
for i := 1; i < 3; i++ {
c := newTestConfig()
c.Peers = []string{seed}
ts := &testServer{Config: c, Id: int64(i)}
ts.Start()
ts.WaitMode(participantMode)
cl.nodes = append(cl.nodes, ts)
cl.Leader()
}
cl.Destroy()
}
func TestClusterConfigReload(t *testing.T) {
defer afterTest(t)