summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHarald Musum <musum@yahoo-inc.com>2017-03-22 05:41:30 +0100
committerGitHub <noreply@github.com>2017-03-22 05:41:30 +0100
commited969742b0d356ae76ab9bc1e30964cb824fa153 (patch)
treebdcae3857563d8c1f6770b7edbffb1806ac4caf6 /node-admin
parenta3c73a2a9b47ab55a76bd7909ebebf58724861c3 (diff)
parent3c14fef2b2eb41db96e187d58c51dfe656960641 (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.java20
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;
+ }
+
}