This is an automated email from the ASF dual-hosted git repository.

edcoleman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new 4f51fb9475 clean up AddressUtil.parseAddress usage (#4185)
4f51fb9475 is described below

commit 4f51fb9475eddaf8f70e1bf3bda16c2ed1cf2cae
Author: EdColeman <d...@etcoleman.com>
AuthorDate: Tue Jan 23 18:58:44 2024 -0500

    clean up AddressUtil.parseAddress usage (#4185)
    
    * clean up AddressUtil.parseAddress usage
    * address port normalization, added test
---
 .../core/clientImpl/InstanceOperationsImpl.java    |  3 +--
 .../apache/accumulo/core/lock/ServiceLockData.java |  2 +-
 .../accumulo/core/metadata/TServerInstance.java    |  4 ++--
 .../org/apache/accumulo/core/util/AddressUtil.java | 18 +++++++++------
 .../apache/accumulo/core/util/AddressUtilTest.java | 26 ++++++++++++++++++++++
 .../accumulo/server/manager/LiveTServerSet.java    |  4 ++--
 .../manager/state/TabletStateChangeIterator.java   |  2 +-
 .../monitor/rest/manager/ManagerResource.java      |  2 +-
 .../rest/tservers/TabletServerResource.java        |  2 +-
 9 files changed, 46 insertions(+), 17 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
index c71b79c39a..ea9ff145ec 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
@@ -352,8 +352,7 @@ public class InstanceOperationsImpl implements 
InstanceOperations {
 
   @Override
   public void ping(String tserver) throws AccumuloException {
-    try (
-        TTransport transport = 
createTransport(AddressUtil.parseAddress(tserver, false), context)) {
+    try (TTransport transport = 
createTransport(AddressUtil.parseAddress(tserver), context)) {
       Client client = createClient(ThriftClientTypes.TABLET_SERVER, transport);
       client.getTabletServerStatus(TraceUtil.traceInfo(), context.rpcCreds());
     } catch (TException e) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockData.java 
b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockData.java
index 865c0a9f4c..c550d64c16 100644
--- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockData.java
+++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockData.java
@@ -170,7 +170,7 @@ public class ServiceLockData implements 
Comparable<ServiceLockData> {
 
   public HostAndPort getAddress(ThriftService service) {
     String s = getAddressString(service);
-    return s == null ? null : AddressUtil.parseAddress(s, false);
+    return s == null ? null : AddressUtil.parseAddress(s);
   }
 
   public String getGroup(ThriftService service) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/TServerInstance.java 
b/core/src/main/java/org/apache/accumulo/core/metadata/TServerInstance.java
index 56aaa06a8a..9e26102525 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/TServerInstance.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/TServerInstance.java
@@ -62,11 +62,11 @@ public class TServerInstance implements 
Comparable<TServerInstance> {
   }
 
   public TServerInstance(String address, long session) {
-    this(AddressUtil.parseAddress(address, false), Long.toHexString(session));
+    this(AddressUtil.parseAddress(address), Long.toHexString(session));
   }
 
   public TServerInstance(Value address, Text session) {
-    this(AddressUtil.parseAddress(new String(address.get(), UTF_8), false), 
session.toString());
+    this(AddressUtil.parseAddress(new String(address.get(), UTF_8)), 
session.toString());
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/accumulo/core/util/AddressUtil.java 
b/core/src/main/java/org/apache/accumulo/core/util/AddressUtil.java
index 880944c5f8..b6bb6f9534 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/AddressUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/AddressUtil.java
@@ -31,11 +31,10 @@ public class AddressUtil {
 
   private static final Logger log = LoggerFactory.getLogger(AddressUtil.class);
 
-  public static HostAndPort parseAddress(String address, boolean 
ignoreMissingPort)
-      throws NumberFormatException {
-    address = address.replace('+', ':');
-    HostAndPort hap = HostAndPort.fromString(address);
-    if (!ignoreMissingPort && !hap.hasPort()) {
+  public static HostAndPort parseAddress(final String address) throws 
NumberFormatException {
+    String normalized = normalizePortSeparator(address);
+    HostAndPort hap = HostAndPort.fromString(normalized);
+    if (!hap.hasPort()) {
       throw new IllegalArgumentException(
           "Address was expected to contain port. address=" + address);
     }
@@ -43,8 +42,13 @@ public class AddressUtil {
     return hap;
   }
 
-  public static HostAndPort parseAddress(String address, int defaultPort) {
-    return parseAddress(address, true).withDefaultPort(defaultPort);
+  public static HostAndPort parseAddress(final String address, final int 
defaultPort) {
+    String normalized = normalizePortSeparator(address);
+    return HostAndPort.fromString(normalized).withDefaultPort(defaultPort);
+  }
+
+  private static String normalizePortSeparator(final String address) {
+    return address.replace('+', ':');
   }
 
   /**
diff --git 
a/core/src/test/java/org/apache/accumulo/core/util/AddressUtilTest.java 
b/core/src/test/java/org/apache/accumulo/core/util/AddressUtilTest.java
index e81b72d142..4c1303aa08 100644
--- a/core/src/test/java/org/apache/accumulo/core/util/AddressUtilTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/util/AddressUtilTest.java
@@ -28,6 +28,8 @@ import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.net.HostAndPort;
+
 /**
  * Test the AddressUtil class.
  */
@@ -102,4 +104,28 @@ public class AddressUtilTest {
         "The JVM Security settings cache DNS failures forever, this should 
cause an exception.");
 
   }
+
+  @Test
+  public void normalizeAddressRequirePortTest() {
+    HostAndPort hostAndPort = AddressUtil.parseAddress("127.0.1.2+8080");
+    assertEquals("127.0.1.2", hostAndPort.getHost());
+    assertEquals(8080, hostAndPort.getPort());
+
+    HostAndPort hostAndPort2 = AddressUtil.parseAddress("127.0.1.2:9123");
+    assertEquals("127.0.1.2", hostAndPort2.getHost());
+    assertEquals(9123, hostAndPort2.getPort());
+
+    assertThrows(IllegalArgumentException.class, () -> 
AddressUtil.parseAddress("127.0.1.2"));
+  }
+
+  @Test
+  public void normalizeAddressWithDefaultTest() {
+    HostAndPort hostAndPort = AddressUtil.parseAddress("127.0.1.2+8080", 9123);
+    assertEquals("127.0.1.2", hostAndPort.getHost());
+    assertEquals(8080, hostAndPort.getPort());
+
+    HostAndPort hostAndPort2 = AddressUtil.parseAddress("127.0.1.2", 9123);
+    assertEquals("127.0.1.2", hostAndPort2.getHost());
+    assertEquals(9123, hostAndPort2.getPort());
+  }
 }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
 
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
index e932d5c903..b41c381de1 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
@@ -398,11 +398,11 @@ public class LiveTServerSet implements Watcher {
       if (index == -1) {
         throw new IllegalArgumentException("Could not parse tabletserver '" + 
tabletServer + "'");
       }
-      addr = AddressUtil.parseAddress(tabletServer.substring(0, index), false);
+      addr = AddressUtil.parseAddress(tabletServer.substring(0, index));
       // Strip off the last bracket
       sessionId = tabletServer.substring(index + 1, tabletServer.length() - 1);
     } else {
-      addr = AddressUtil.parseAddress(tabletServer, false);
+      addr = AddressUtil.parseAddress(tabletServer);
     }
     for (Entry<String,TServerInfo> entry : servers.entrySet()) {
       if (entry.getValue().instance.getHostAndPort().equals(addr)) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/TabletStateChangeIterator.java
 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/TabletStateChangeIterator.java
index d07528e319..8f5962965b 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/TabletStateChangeIterator.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/TabletStateChangeIterator.java
@@ -135,7 +135,7 @@ public class TabletStateChangeIterator extends 
SkippingIterator {
         if (instance != null && instance.endsWith("]")) {
           instance = instance.substring(0, instance.length() - 1);
         }
-        result.add(new TServerInstance(AddressUtil.parseAddress(hostport, 
false), instance));
+        result.add(new TServerInstance(AddressUtil.parseAddress(hostport), 
instance));
       }
     }
     return result;
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
index a9d62059b4..c2c20cc3e3 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/manager/ManagerResource.java
@@ -102,7 +102,7 @@ public class ManagerResource {
       List<String> managers = monitor.getContext().getManagerLocations();
 
       String manager =
-          managers.isEmpty() ? "Down" : 
AddressUtil.parseAddress(managers.get(0), false).getHost();
+          managers.isEmpty() ? "Down" : 
AddressUtil.parseAddress(managers.get(0)).getHost();
       int onlineTabletServers = mmi.tServerInfo.size();
       int totalTabletServers = tservers.size();
       int tablets = monitor.getTotalTabletCount();
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
index f38cf3b4eb..c91fa6a998 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
@@ -125,7 +125,7 @@ public class TabletServerResource {
     for (TabletServerStatus server : mmi.tServerInfo) {
       if (server.logSorts != null) {
         for (RecoveryStatus recovery : server.logSorts) {
-          String serv = AddressUtil.parseAddress(server.name, false).getHost();
+          String serv = AddressUtil.parseAddress(server.name).getHost();
           String log = recovery.name;
           int time = recovery.runtime;
           double progress = recovery.progress;

Reply via email to