Repository: incubator-drill
Updated Branches:
  refs/heads/master 967fef5ad -> 64e43d2b7


DRILL-1315: Allow complex zookeeper string for JDBC connections, same as ODBC.


Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/509bcdfa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/509bcdfa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/509bcdfa

Branch: refs/heads/master
Commit: 509bcdfa8e0daf913fd13de2652245d8b7185192
Parents: 967fef5
Author: Jacques Nadeau <[email protected]>
Authored: Fri Aug 29 14:09:12 2014 -0700
Committer: Jacques Nadeau <[email protected]>
Committed: Fri Aug 29 14:53:48 2014 -0700

----------------------------------------------------------------------
 .../exec/coord/zk/ZKClusterCoordinator.java     | 21 ++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/509bcdfa/exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZKClusterCoordinator.java
----------------------------------------------------------------------
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 b4c3f9c..3773833 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)

Reply via email to