diff options
author | Harald Musum <musum@yahoo-inc.com> | 2017-03-22 05:41:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-22 05:41:30 +0100 |
commit | ed969742b0d356ae76ab9bc1e30964cb824fa153 (patch) | |
tree | bdcae3857563d8c1f6770b7edbffb1806ac4caf6 /node-admin | |
parent | a3c73a2a9b47ab55a76bd7909ebebf58724861c3 (diff) | |
parent | 3c14fef2b2eb41db96e187d58c51dfe656960641 (diff) |
Merge pull request #2041 from yahoo/hmusum/refactor-configserver-shuffling
Randomize before using config server hosts
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/ConfigServerHttpRequestExecutor.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/ConfigServerHttpRequestExecutor.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/ConfigServerHttpRequestExecutor.java index e94b1f3bcd9..239829bc094 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/ConfigServerHttpRequestExecutor.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/util/ConfigServerHttpRequestExecutor.java @@ -41,7 +41,7 @@ public class ConfigServerHttpRequestExecutor { private final ObjectMapper mapper = new ObjectMapper(); private final CloseableHttpClient client; - private final Set<String> configServerHosts; + private final List<String> configServerHosts; private final static int MAX_LOOPS = 2; @Override @@ -63,8 +63,8 @@ public class ConfigServerHttpRequestExecutor { .setConnectionManager(cm).build()); } - public ConfigServerHttpRequestExecutor(Set<String> configServerHosts, CloseableHttpClient client) { - this.configServerHosts = configServerHosts; + ConfigServerHttpRequestExecutor(Set<String> configServerHosts, CloseableHttpClient client) { + this.configServerHosts = randomizeConfigServerHosts(configServerHosts); this.client = client; } @@ -81,12 +81,8 @@ public class ConfigServerHttpRequestExecutor { private <T> T tryAllConfigServers(CreateRequest requestFactory, Class<T> wantedReturnType) { Exception lastException = null; - // Shuffle config server hosts to balance load - List<String> shuffledConfigServerHosts = new ArrayList<>(configServerHosts); - Collections.shuffle(shuffledConfigServerHosts); - for (int loopRetry = 0; loopRetry < MAX_LOOPS; loopRetry++) { - for (String configServer : shuffledConfigServerHosts) { + for (String configServer : configServerHosts) { final CloseableHttpResponse response; try { response = client.execute(requestFactory.createRequest(configServer)); @@ -175,4 +171,12 @@ public class ConfigServerHttpRequestExecutor { private void setContentTypeToApplicationJson(HttpRequestBase request) { request.setHeader(HttpHeaders.CONTENT_TYPE, "application/json"); } + + // Shuffle config server hosts to balance load + private List<String> randomizeConfigServerHosts(Set<String> configServerHosts) { + List<String> shuffledConfigServerHosts = new ArrayList<>(configServerHosts); + Collections.shuffle(shuffledConfigServerHosts); + return shuffledConfigServerHosts; + } + } |