watchtower/wtclient: only reset iterator once we've exhausted all candidates

Doing so allows us to load balance sessions better amongst all of the
tower candidates.
This commit is contained in:
Wilmer Paulino committed 2019-07-30 15:18:18 -07:00
1 parent 0431701262
commit 0690c8f627
1 file changed
+7 -3
+7 -3
View File
@@ -240,9 +240,6 @@ retryWithBackoff:
}
}
// Before attempting a bout of session negotiation, reset the candidate
// iterator to ensure the results are fresh.
n.cfg.Candidates.Reset()
for {
select {
case <-n.quit:
@@ -267,6 +264,13 @@ retryWithBackoff:
log.Debugf("Unable to get new tower candidate, "+
"retrying after %v -- reason: %v", backoff, err)
// Only reset the iterator once we've exhausted all
// candidates. Doing so allows us to load balance
// sessions better amongst all of the tower candidates.
if err == ErrTowerCandidatesExhausted {
n.cfg.Candidates.Reset()
}
goto retryWithBackoff
}