aboutsummaryrefslogtreecommitdiff
path: root/go/topology/topology.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2014-04-11 16:23:58 -0700
committerChris Lu <chris.lu@gmail.com>2014-04-11 16:23:58 -0700
commit008aee0dc1932f75c86e52893044d9cd953ef405 (patch)
tree979b04772948679684cd896435dd1b82c9d7bfe9 /go/topology/topology.go
parent7c82e2316b9f09c0195b35a1487473db153bdec1 (diff)
downloadseaweedfs-008aee0dc1932f75c86e52893044d9cd953ef405.tar.xz
seaweedfs-008aee0dc1932f75c86e52893044d9cd953ef405.zip
Add retrying logic to wait for other peers during cluster bootstrapping.
Diffstat (limited to 'go/topology/topology.go')
-rw-r--r--go/topology/topology.go13
1 files changed, 9 insertions, 4 deletions
diff --git a/go/topology/topology.go b/go/topology/topology.go
index d5af60cd8..6c5bde304 100644
--- a/go/topology/topology.go
+++ b/go/topology/topology.go
@@ -52,21 +52,26 @@ func NewTopology(id string, confFile string, seq sequence.Sequencer, volumeSizeL
}
func (t *Topology) IsLeader() bool {
- return t.RaftServer == nil || t.Leader() == t.RaftServer.Name()
+ if leader, e := t.Leader(); e == nil {
+ return leader == t.RaftServer.Name()
+ }
+ return false
}
-func (t *Topology) Leader() string {
+func (t *Topology) Leader() (string, error) {
l := ""
if t.RaftServer != nil {
l = t.RaftServer.Leader()
+ } else {
+ return "", errors.New("Raft Server not ready yet!")
}
if l == "" {
// We are a single node cluster, we are the leader
- return t.RaftServer.Name()
+ return t.RaftServer.Name(), errors.New("Raft Server not initialized!")
}
- return l
+ return l, nil
}
func (t *Topology) loadConfiguration(configurationFile string) error {