diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java index 7600e99..63eea27 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestRemoteHiveMetaStoreIpAddress.java @@ -21,6 +21,7 @@ import junit.framework.TestCase; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.util.StringUtils; @@ -49,6 +50,8 @@ protected void setUp() throws Exception { int port = MetaStoreUtils.findFreePort(); System.out.println("Starting MetaStore Server on port " + port); + System.setProperty(ConfVars.METASTORE_EVENT_LISTENERS.varname, + IpAddressListener.class.getName()); MetaStoreUtils.startMetaStore(port, ShimLoader.getHadoopThriftAuthBridge()); isServerStarted = true; diff --git a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java index d03dba4..0bb3c0a 100644 --- a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java +++ b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/authorization/TestHS2AuthzContext.java @@ -120,9 +120,10 @@ private void verifyContextContents(final String cmd, String ctxCmd) throws SQLEx HiveAuthzContext context = contextCapturer.getValue(); assertEquals("Command ", ctxCmd, context.getCommandString()); - assertTrue("ip address pattern check", context.getIpAddress().contains(".")); + assertTrue("ip address pattern check", context.getIpAddress().matches("[.:a-fA-F0-9]+")); // ip address size check - check for something better than non zero assertTrue("ip address size check", context.getIpAddress().length() > 7); + } private Connection getConnection(String userName) throws SQLException { diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java b/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java index cfab73a..4a56bfa 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/TSetIpAddressProcessor.java @@ -57,6 +57,6 @@ protected void setIpAddress(final TProtocol in) { } protected void setIpAddress(final Socket inSocket) { - HMSHandler.setIpAddress(inSocket.getInetAddress().toString()); + HMSHandler.setIpAddress(inSocket.getInetAddress().getHostAddress()); } } diff --git a/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java b/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java index ed0f713..d8ec281 100644 --- a/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java +++ b/metastore/src/test/org/apache/hadoop/hive/metastore/IpAddressListener.java @@ -47,15 +47,10 @@ public IpAddressListener(Configuration config) { super(config); } - private String getIpFromInetAddress(String addr) { - return addr.substring(addr.indexOf('/') + 1); - } - private void checkIpAddress() { try { - String localhostIp = InetAddress.getByName(LOCAL_HOST).toString(); - Assert.assertEquals(getIpFromInetAddress(localhostIp), - getIpFromInetAddress(HMSHandler.getIpAddress())); + String localhostIp = InetAddress.getByName(LOCAL_HOST).getHostAddress(); + Assert.assertEquals(localhostIp, HMSHandler.getIpAddress()); } catch (UnknownHostException e) { Assert.assertTrue("InetAddress.getLocalHost threw an exception: " + e.getMessage(), false); } diff --git a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java index 19722f2..0149dcf 100644 --- a/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java +++ b/service/src/java/org/apache/hive/service/auth/TSetIpAddressProcessor.java @@ -75,7 +75,7 @@ protected void setIpAddress(final TProtocol in) { if (tSocket == null) { LOGGER.warn("Unknown Transport, cannot determine ipAddress"); } else { - THREAD_LOCAL_IP_ADDRESS.set(tSocket.getSocket().getInetAddress().toString()); + THREAD_LOCAL_IP_ADDRESS.set(tSocket.getSocket().getInetAddress().getHostAddress()); } }