From 6b6f8b0644197463772f456f76b66abdf94f2c75 Mon Sep 17 00:00:00 2001 From: Wendell Sun Date: Mon, 15 Jan 2018 16:33:50 +0800 Subject: [PATCH 1/2] Fix #568, avoid redirect when joining member --- weed/server/raft_server.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/weed/server/raft_server.go b/weed/server/raft_server.go index 591bc7caf..e86f14ad5 100644 --- a/weed/server/raft_server.go +++ b/weed/server/raft_server.go @@ -18,6 +18,7 @@ import ( "github.com/chrislusf/raft" "github.com/chrislusf/seaweedfs/weed/glog" + "github.com/chrislusf/seaweedfs/weed/operation" "github.com/chrislusf/seaweedfs/weed/topology" "github.com/gorilla/mux" ) @@ -159,14 +160,23 @@ func (s *RaftServer) Join(peers []string) error { ConnectionString: "http://" + s.httpAddr, } - var err error var b bytes.Buffer json.NewEncoder(&b).Encode(command) for _, m := range peers { if m == s.httpAddr { continue } - target := fmt.Sprintf("http://%s/cluster/join", strings.TrimSpace(m)) + leader, _, err := operation.ListMasters(strings.TrimSpace(m)) + if err != nil { + glog.V(0).Infof("Get [%s] status error: %s\n", m, err.Error()) + if _, ok := err.(*url.Error); ok { + // If we receive a network error try the next member + continue + } + } + + glog.V(0).Infof("Member:[%s] => Leader:[%s]", m, leader) + target := fmt.Sprintf("http://%s/cluster/join", leader) glog.V(0).Infoln("Attempting to connect to:", target) err = postFollowingOneRedirect(target, "application/json", b) @@ -198,7 +208,7 @@ func postFollowingOneRedirect(target string, contentType string, b bytes.Buffer) reply := string(data) if strings.HasPrefix(reply, "\"http") { - urlStr := reply[1: len(reply)-1] + urlStr := reply[1 : len(reply)-1] glog.V(0).Infoln("Post redirected to ", urlStr) resp2, err2 := http.Post(urlStr, contentType, backupReader) From 6ac25c0510eefa41b719d8b122246e470b333512 Mon Sep 17 00:00:00 2001 From: Wendell Sun Date: Mon, 15 Jan 2018 18:45:03 +0800 Subject: [PATCH 2/2] Update import package path --- weed/compress/delta_binary_pack32.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/weed/compress/delta_binary_pack32.go b/weed/compress/delta_binary_pack32.go index 42ae8d42d..1da0e427a 100644 --- a/weed/compress/delta_binary_pack32.go +++ b/weed/compress/delta_binary_pack32.go @@ -1,8 +1,8 @@ package compress import ( - "github.com/reducedb/encoding/cursor" - "github.com/reducedb/encoding/delta/bp32" + "github.com/dataence/encoding/cursor" + "github.com/dataence/encoding/delta/bp32" ) // Compress compresses in[]int32 to out[]int32