diff options
| author | Chris Lu <chris.lu@gmail.com> | 2014-04-11 16:23:58 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2014-04-11 16:23:58 -0700 |
| commit | 008aee0dc1932f75c86e52893044d9cd953ef405 (patch) | |
| tree | 979b04772948679684cd896435dd1b82c9d7bfe9 /go/topology/topology.go | |
| parent | 7c82e2316b9f09c0195b35a1487473db153bdec1 (diff) | |
| download | seaweedfs-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.go | 13 |
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 { |
