diff options
| author | Stewart Miles <stewart@agentic.ai> | 2023-03-16 20:50:38 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-16 20:50:38 -0700 |
| commit | 264be0d2d4e61543902e79c0b092103400c283f7 (patch) | |
| tree | f807e2eac830ede8391350b52d388e11483f6c03 | |
| parent | d695119073a2e890aa8fe13087a1d7c73b7ed3e0 (diff) | |
| download | seaweedfs-264be0d2d4e61543902e79c0b092103400c283f7.tar.xz seaweedfs-264be0d2d4e61543902e79c0b092103400c283f7.zip | |
Retry until a leader is selected. (#4318)
Fixes regression introduced in
https://github.com/seaweedfs/seaweedfs/pull/4313
Related to #4307
| -rw-r--r-- | weed/topology/topology.go | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/weed/topology/topology.go b/weed/topology/topology.go index 825c02961..fee4d6a03 100644 --- a/weed/topology/topology.go +++ b/weed/topology/topology.go @@ -101,7 +101,20 @@ func (t *Topology) Leader() (l pb.ServerAddress, err error) { exponentialBackoff := backoff.NewExponentialBackOff() exponentialBackoff.InitialInterval = 100 * time.Millisecond exponentialBackoff.MaxElapsedTime = 20 * time.Second - return backoff.RetryWithData(t.MaybeLeader, exponentialBackoff) + leaderNotSelected := errors.New("leader not selected yet") + l, err = backoff.RetryWithData( + func() (l pb.ServerAddress, err error) { + l, err = t.MaybeLeader() + if err == nil && l == "" { + err = leaderNotSelected + } + return l, err + }, + exponentialBackoff) + if err == leaderNotSelected { + l = "" + } + return l, err } func (t *Topology) MaybeLeader() (l pb.ServerAddress, err error) { |
