aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main/java/org/apache/drill/exec/client
diff options
context:
space:
mode:
authorAdamPD <adam@pharmadata.net.au>2015-04-13 16:25:29 +1000
committerSteven Phillips <smp@apache.org>2015-04-13 11:37:08 -0700
commita6df26ac030068239ad63335f871f0aefe735ef7 (patch)
treefd561884decbd785bfc1c03222e278cc0d8e7cd4 /exec/java-exec/src/main/java/org/apache/drill/exec/client
parent49042bca078aacb24a8d0dddb451363be8e764da (diff)
DRILL-2512: Shuffle the list of Drill endpoints before connecting
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/client')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java b/exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java
index 9a948fb2f..579cf7dc9 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/client/DrillClient.java
@@ -24,7 +24,9 @@ import io.netty.buffer.DrillBuf;
import java.io.Closeable;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Properties;
import java.util.Vector;
@@ -165,9 +167,10 @@ public class DrillClient implements Closeable, ConnectionThrottle {
this.props = upBuilder.build();
}
- Collection<DrillbitEndpoint> endpoints = clusterCoordinator.getAvailableEndpoints();
+ ArrayList<DrillbitEndpoint> endpoints = new ArrayList<>(clusterCoordinator.getAvailableEndpoints());
checkState(!endpoints.isEmpty(), "No DrillbitEndpoint can be found");
- // just use the first endpoint for now
+ // shuffle the collection then get the first endpoint
+ Collections.shuffle(endpoints);
DrillbitEndpoint endpoint = endpoints.iterator().next();
eventLoopGroup = createEventLoop(config.getInt(ExecConstants.CLIENT_RPC_THREADS), "Client-");
@@ -190,11 +193,12 @@ public class DrillClient implements Closeable, ConnectionThrottle {
retry--;
try {
Thread.sleep(this.reconnectDelay);
- Collection<DrillbitEndpoint> endpoints = clusterCoordinator.getAvailableEndpoints();
+ ArrayList<DrillbitEndpoint> endpoints = new ArrayList<>(clusterCoordinator.getAvailableEndpoints());
if (endpoints.isEmpty()) {
continue;
}
client.close();
+ Collections.shuffle(endpoints);
connect(endpoints.iterator().next());
return true;
} catch (Exception e) {