git commit: PHOENIX-1234 QueryUtil doesn't parse zk hosts correctly
Repository: phoenix Updated Branches: refs/heads/master ec3be54ef - 4a1ec7ec4 PHOENIX-1234 QueryUtil doesn't parse zk hosts correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4a1ec7ec Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4a1ec7ec Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4a1ec7ec Branch: refs/heads/master Commit: 4a1ec7ec44248315023db41cf4c941a366a1d294 Parents: ec3be54 Author: Jesse Yates jya...@apache.org Authored: Thu Sep 4 09:44:10 2014 -0700 Committer: Jesse Yates jya...@apache.org Committed: Thu Sep 4 09:44:10 2014 -0700 -- .../java/org/apache/phoenix/util/QueryUtil.java | 55 +++- .../java/org/apache/phoenix/query/BaseTest.java | 16 +++--- .../org/apache/phoenix/util/QueryUtilTest.java | 55 +++- 3 files changed, 102 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4a1ec7ec/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java index 6a45666..88ffd8e 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java @@ -25,6 +25,7 @@ import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -35,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.util.Addressing; +import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.zookeeper.ZKConfig; import org.apache.phoenix.jdbc.PhoenixDriver; @@ -43,6 +45,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import org.apache.phoenix.query.QueryServices; public final class QueryUtil { @@ -189,26 +192,50 @@ public final class QueryUtil { } public static Connection getConnection(Properties props, Configuration conf) +throws ClassNotFoundException, +SQLException { +String url = getConnectionUrl(props, conf); +LOG.info(Creating connection with the jdbc url: + url); +return DriverManager.getConnection(url, props); +} + +public static String getConnectionUrl(Properties props, Configuration conf) throws ClassNotFoundException, SQLException { // make sure we load the phoenix driver Class.forName(PhoenixDriver.class.getName()); // read the hbase properties from the configuration String server = ZKConfig.getZKQuorumServersString(conf); -int port; -// if it has a port, don't try to add one -try { -server = Addressing.parseHostname(server); -port = Addressing.parsePort(server); -} catch (IllegalArgumentException e) { -// port isn't set -port = -conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, -HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT); +// could be a comma-separated list +String[] rawServers = server.split(,); +ListString servers = new ArrayListString(rawServers.length); +boolean first = true; +int port = -1; +for (String serverPort : rawServers) { +try { +server = Addressing.parseHostname(serverPort); +int specifiedPort = Addressing.parsePort(serverPort); +// there was a previously specified port and it doesn't match this server +if (port 0 specifiedPort != port) { +throw new IllegalStateException(Phoenix/HBase only supports connecting to a + +single zookeeper client port. Specify servers only as host names in + +HBase configuration); +} +// set the port to the specified port +port = specifiedPort; +servers.add(server); +} catch (IllegalArgumentException e) { +} +} +// port wasn't set, shouldn't ever happen from HBase, but just in case +if (port == -1) { +port = conf.getInt(QueryServices.ZOOKEEPER_PORT_ATTRIB, -1); +if (port == -1) { +throw new RuntimeException(Client zk port was not set!); +} } +
git commit: PHOENIX-1234 QueryUtil doesn't parse zk hosts correctly
Repository: phoenix Updated Branches: refs/heads/4.0 c4ede66fe - a9a128bfa PHOENIX-1234 QueryUtil doesn't parse zk hosts correctly Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a9a128bf Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a9a128bf Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a9a128bf Branch: refs/heads/4.0 Commit: a9a128bfa82f0f978f2260a119a4e88ff1db6330 Parents: c4ede66 Author: Jesse Yates jya...@apache.org Authored: Thu Sep 4 09:44:10 2014 -0700 Committer: Jesse Yates jya...@apache.org Committed: Thu Sep 4 09:44:46 2014 -0700 -- .../java/org/apache/phoenix/util/QueryUtil.java | 55 +++- .../java/org/apache/phoenix/query/BaseTest.java | 16 +++--- .../org/apache/phoenix/util/QueryUtilTest.java | 55 +++- 3 files changed, 102 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9a128bf/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java index da6b17a..7f5d4c6 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/QueryUtil.java @@ -25,6 +25,7 @@ import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -35,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.util.Addressing; +import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.zookeeper.ZKConfig; import org.apache.phoenix.jdbc.PhoenixDriver; @@ -43,6 +45,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import org.apache.phoenix.query.QueryServices; public final class QueryUtil { @@ -190,26 +193,50 @@ public final class QueryUtil { } public static Connection getConnection(Properties props, Configuration conf) +throws ClassNotFoundException, +SQLException { +String url = getConnectionUrl(props, conf); +LOG.info(Creating connection with the jdbc url: + url); +return DriverManager.getConnection(url, props); +} + +public static String getConnectionUrl(Properties props, Configuration conf) throws ClassNotFoundException, SQLException { // make sure we load the phoenix driver Class.forName(PhoenixDriver.class.getName()); // read the hbase properties from the configuration String server = ZKConfig.getZKQuorumServersString(conf); -int port; -// if it has a port, don't try to add one -try { -server = Addressing.parseHostname(server); -port = Addressing.parsePort(server); -} catch (IllegalArgumentException e) { -// port isn't set -port = -conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, -HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT); +// could be a comma-separated list +String[] rawServers = server.split(,); +ListString servers = new ArrayListString(rawServers.length); +boolean first = true; +int port = -1; +for (String serverPort : rawServers) { +try { +server = Addressing.parseHostname(serverPort); +int specifiedPort = Addressing.parsePort(serverPort); +// there was a previously specified port and it doesn't match this server +if (port 0 specifiedPort != port) { +throw new IllegalStateException(Phoenix/HBase only supports connecting to a + +single zookeeper client port. Specify servers only as host names in + +HBase configuration); +} +// set the port to the specified port +port = specifiedPort; +servers.add(server); +} catch (IllegalArgumentException e) { +} +} +// port wasn't set, shouldn't ever happen from HBase, but just in case +if (port == -1) { +port = conf.getInt(QueryServices.ZOOKEEPER_PORT_ATTRIB, -1); +if (port == -1) { +throw new RuntimeException(Client zk port was not set!); +} } +