aboutsummaryrefslogtreecommitdiff
path: root/exec
diff options
context:
space:
mode:
authorJacques Nadeau <jacques@apache.org>2014-08-29 14:09:12 -0700
committerJacques Nadeau <jacques@apache.org>2014-08-29 14:53:48 -0700
commit509bcdfa8e0daf913fd13de2652245d8b7185192 (patch)
tree676ac7f0561d75419618469387f77475e20f187c /exec
parent967fef5ade88d7be30f745cc884f34b911f0bbb3 (diff)
DRILL-1315: Allow complex zookeeper string for JDBC connections, same as ODBC.
Diffstat (limited to 'exec')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java
index b4c3f9c67..3773833be 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java
@@ -25,6 +25,8 @@ import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
@@ -59,6 +61,7 @@ public class ZKClusterCoordinator extends ClusterCoordinator {
private final String serviceName;
private final CountDownLatch initialConnection = new CountDownLatch(1);
+ private static final Pattern ZK_COMPLEX_STRING = Pattern.compile("(^.*?)/(.*)/([^/]*)$");
public ZKClusterCoordinator(DrillConfig config) throws IOException{
this(config, null);
@@ -66,11 +69,25 @@ public class ZKClusterCoordinator extends ClusterCoordinator {
public ZKClusterCoordinator(DrillConfig config, String connect) throws IOException {
connect = connect == null || connect.isEmpty() ? config.getString(ExecConstants.ZK_CONNECTION) : connect;
- this.serviceName = config.getString(ExecConstants.SERVICE_NAME);
+ String clusterId = config.getString(ExecConstants.SERVICE_NAME);
+ String zkRoot = config.getString(ExecConstants.ZK_ROOT);
+
+
+ // check if this is a complex zk string. If so, parse into components.
+ Matcher m = ZK_COMPLEX_STRING.matcher(connect);
+ if(m.matches()){
+ connect = m.group(1);
+ zkRoot = m.group(2);
+ clusterId = m.group(3);
+ }
+
+ logger.debug("Connect {}, zkRoot {}, clusterId: " + clusterId, connect, zkRoot);
+
+ this.serviceName = clusterId;
RetryPolicy rp = new RetryNTimes(config.getInt(ExecConstants.ZK_RETRY_TIMES),
config.getInt(ExecConstants.ZK_RETRY_DELAY));
curator = CuratorFrameworkFactory.builder()
- .namespace(config.getString(ExecConstants.ZK_ROOT))
+ .namespace(zkRoot)
.connectionTimeoutMs(config.getInt(ExecConstants.ZK_TIMEOUT))
.retryPolicy(rp)
.connectString(connect)