You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/12 07:18:26 UTC

[lucene-solr] 01/02: #84 Fewer URL's, they make a lot of garbage.

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

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 21500142a25e567d73a5bc33ee1e97dc180cd445
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sun Jul 12 02:17:37 2020 -0500

    #84 Fewer URL's, they make a lot of garbage.
---
 .../client/solrj/embedded/JettySolrRunner.java     | 36 ++++++++++------------
 .../apache/solr/response/SolrQueryResponse.java    |  3 +-
 .../test/org/apache/solr/TestTolerantSearch.java   |  2 +-
 .../client/solrj/impl/ConnectionReuseTest.java     | 12 +++++---
 .../solr/cloud/FullSolrCloudDistribCmdsTest.java   |  3 +-
 .../solr/cloud/LeaderVoteWaitTimeoutTest.java      |  2 +-
 .../org/apache/solr/cloud/OverseerRolesTest.java   |  2 +-
 .../apache/solr/cloud/TestCloudConsistency.java    |  2 +-
 .../apache/solr/cloud/TestCloudDeleteByQuery.java  |  8 ++---
 .../cloud/TestLeaderElectionWithEmptyReplica.java  |  2 +-
 .../solr/cloud/TestPullReplicaErrorHandling.java   |  2 +-
 .../apache/solr/cloud/TestRebalanceLeaders.java    |  2 +-
 .../cloud/TestStressCloudBlindAtomicUpdates.java   |  2 +-
 .../solr/cloud/TestTlogReplayVsRecovery.java       |  2 +-
 .../cloud/TestTolerantUpdateProcessorCloud.java    |  4 +--
 .../TestTolerantUpdateProcessorRandomCloud.java    |  2 +-
 .../solr/cloud/api/collections/ShardSplitTest.java |  2 +-
 .../TestCollectionsAPIViaSolrCloudCluster.java     |  6 ++--
 .../cloud/autoscaling/SearchRateTriggerTest.java   |  2 +-
 .../test/org/apache/solr/cloud/rule/RulesTest.java |  4 +--
 .../solr/handler/TestSystemCollAutoCreate.java     |  2 +-
 .../solr/handler/admin/ZookeeperReadAPITest.java   |  2 +-
 .../handler/admin/ZookeeperStatusHandlerTest.java  |  2 +-
 .../handler/component/ShardsWhitelistTest.java     |  3 +-
 .../client/solrj/impl/BasicHttpSolrClientTest.java |  2 +-
 .../impl/HttpSolrClientSSLAuthConPoolTest.java     |  6 ++--
 .../solr/cloud/AbstractFullDistribZkTestBase.java  |  2 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |  2 +-
 .../org/apache/solr/cloud/JettySolrRunnerTest.java |  8 ++---
 29 files changed, 64 insertions(+), 65 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
index 7085b06..3fb1d4f 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
@@ -31,6 +31,7 @@ import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.net.BindException;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.EnumSet;
@@ -156,6 +157,10 @@ public class JettySolrRunner implements Closeable {
 
   private static Scheduler scheduler = new SolrHttpClientScheduler("JettySolrRunnerScheduler", true, null, new ThreadGroup("JettySolrRunnerScheduler"), 1);
 
+  public String getContext() {
+    return config.context;
+  }
+
   public static class DebugFilter implements Filter {
     private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
@@ -579,7 +584,7 @@ public class JettySolrRunner implements Closeable {
         if (started) {
           proxy.reopen();
         } else {
-          proxy.open(getBaseUrl().toURI());
+          proxy.open(new URI(getBaseUrl()));
         }
       }
 
@@ -850,32 +855,19 @@ public class JettySolrRunner implements Closeable {
    * Returns a base URL consisting of the protocol, host, and port for a
    * Connector in use by the Jetty Server contained in this runner.
    */
-  public URL getBaseUrl() {
-    try {
-      return new URL(protocol, host, jettyPort, config.context);
-    } catch (MalformedURLException e) {
-      throw new RuntimeException(e);
-    }
+  public String getBaseUrl() {
+      return protocol +"://" + host + ":" + jettyPort + config.context;
   }
 
-  public URL getBaseURLV2(){
-    try {
-      return new URL(protocol, host, jettyPort, "/api");
-    } catch (MalformedURLException e) {
-      throw new RuntimeException(e);
-    }
-
+  public String getBaseURLV2(){
+    return protocol +"://" + host + ":" + jettyPort + "/api";
   }
   /**
    * Returns a base URL consisting of the protocol, host, and port for a
    * Connector in use by the Jetty Server contained in this runner.
    */
-  public URL getProxyBaseUrl() {
-    try {
-      return new URL(protocol, host, getLocalPort(), config.context);
-    } catch (MalformedURLException e) {
-      throw new RuntimeException(e);
-    }
+  public String getProxyBaseUrl() {
+    return protocol +":" + host + ":" + getLocalPort() + config.context;
   }
 
   public SolrClient newClient() {
@@ -924,6 +916,10 @@ public class JettySolrRunner implements Closeable {
     return solrHome;
   }
 
+  public String getHost() {
+    return host;
+  }
+
   /**
    * @return this node's properties
    */
diff --git a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
index 70a002d..c2cdbee 100644
--- a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
+++ b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
@@ -224,7 +224,8 @@ public class SolrQueryResponse {
 
   /** Returns a string of the form "logid name1=value1 name2=value2 ..." */
   public String getToLogAsString(String logid) {
-    StringBuilder sb = new StringBuilder(logid);
+    StringBuilder sb = new StringBuilder(logid.length() + 1024);
+    sb.append(logid);
     for (int i=0; i<toLog.size(); i++) {
       if (sb.length() > 0) {
         sb.append(' ');
diff --git a/solr/core/src/test/org/apache/solr/TestTolerantSearch.java b/solr/core/src/test/org/apache/solr/TestTolerantSearch.java
index 81dd4be..2f2e703 100644
--- a/solr/core/src/test/org/apache/solr/TestTolerantSearch.java
+++ b/solr/core/src/test/org/apache/solr/TestTolerantSearch.java
@@ -59,7 +59,7 @@ public class TestTolerantSearch extends SolrJettyTestBase {
     systemSetPropertySolrDisableShardsWhitelist("true");
     solrHome = createSolrHome();
     createAndStartJetty(solrHome.getAbsolutePath());
-    String url = jetty.getBaseUrl().toString();
+    String url = jetty.getBaseUrl();
     collection1 = getHttpSolrClient(url + "/collection1");
     collection2 = getHttpSolrClient(url + "/collection2");
     
diff --git a/solr/core/src/test/org/apache/solr/client/solrj/impl/ConnectionReuseTest.java b/solr/core/src/test/org/apache/solr/client/solrj/impl/ConnectionReuseTest.java
index 3dafe04..36981bf 100644
--- a/solr/core/src/test/org/apache/solr/client/solrj/impl/ConnectionReuseTest.java
+++ b/solr/core/src/test/org/apache/solr/client/solrj/impl/ConnectionReuseTest.java
@@ -65,13 +65,13 @@ public class ConnectionReuseTest extends SolrCloudTestCase {
         .process(cluster.getSolrClient());
   }
 
-  private SolrClient buildClient(CloseableHttpClient httpClient, URL url) {
+  private SolrClient buildClient(CloseableHttpClient httpClient, String url) {
     switch (random().nextInt(3)) {
       case 0:
         // currently only testing with 1 thread
         return getConcurrentUpdateSolrClient(url.toString() + "/" + COLLECTION, httpClient, 6, 1);
       case 1:
-        return getHttpSolrClient(url.toString() + "/" + COLLECTION, httpClient);
+        return getHttpSolrClient(url + "/" + COLLECTION, httpClient);
       case 2:
         CloudSolrClient client = getCloudSolrClient(cluster.getZkServer().getZkAddress(), random().nextBoolean(), httpClient, 30000, 60000);
         client.setDefaultCollection(COLLECTION);
@@ -83,13 +83,15 @@ public class ConnectionReuseTest extends SolrCloudTestCase {
   @Test
   public void testConnectionReuse() throws Exception {
 
-    URL url = cluster.getJettySolrRunners().get(0).getBaseUrl();
+    String url = cluster.getJettySolrRunners().get(0).getBaseUrl();
+    String host = cluster.getJettySolrRunners().get(0).getHost();
+    int port = cluster.getJettySolrRunners().get(0).getLocalPort();
     PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 
     CloseableHttpClient httpClient = HttpClientUtil.createClient(null, cm);
     try (SolrClient client = buildClient(httpClient, url)) {
 
-      HttpHost target = new HttpHost(url.getHost(), url.getPort(), isSSLMode() ? "https" : "http");
+      HttpHost target = new HttpHost(host, port, isSSLMode() ? "https" : "http");
       HttpRoute route = new HttpRoute(target);
 
       ConnectionRequest mConn = getClientConnectionRequest(httpClient, route, cm);
@@ -124,7 +126,7 @@ public class ConnectionReuseTest extends SolrCloudTestCase {
         }
       }
 
-      route = new HttpRoute(new HttpHost(url.getHost(), url.getPort(), isSSLMode() ? "https" : "http"));
+      route = new HttpRoute(new HttpHost(host, port, isSSLMode() ? "https" : "http"));
 
       mConn = cm.requestConnection(route, HttpSolrClient.cacheKey);
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java b/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
index 6cd25d5..2b2fd75 100644
--- a/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/FullSolrCloudDistribCmdsTest.java
@@ -18,6 +18,7 @@ package org.apache.solr.cloud;
 
 import java.lang.invoke.MethodHandles;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -187,7 +188,7 @@ public class FullSolrCloudDistribCmdsTest extends SolrCloudTestCase {
       cluster.waitForJettyToStop(leaderToPartition);
       leaderToPartition.setProxyPort(proxy.getListenPort());
       cluster.startJettySolrRunner(leaderToPartition);
-      proxy.open(leaderToPartition.getBaseUrl().toURI());
+      proxy.open(new URI(leaderToPartition.getBaseUrl()));
       try {
         log.info("leaderToPartition's Proxy: {}", proxy);
         
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
index 8cececd..eaa412f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
@@ -93,7 +93,7 @@ public class LeaderVoteWaitTimeoutTest extends SolrCloudTestCase {
       jetty.setProxyPort(proxy.getListenPort());
       cluster.stopJettySolrRunner(jetty);// TODO: Can we avoid this restart
       cluster.startJettySolrRunner(jetty);
-      proxy.open(jetty.getBaseUrl().toURI());
+      proxy.open(new URI(jetty.getBaseUrl()));
       if (log.isInfoEnabled()) {
         log.info("Adding proxy for URL: {}. Proxy {}", jetty.getBaseUrl(), proxy.getUrl());
       }
diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java
index e0e2048..4048336 100644
--- a/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java
@@ -88,7 +88,7 @@ public class OverseerRolesTest extends SolrCloudTestCase {
     int hostPort = overseerUrl.getPort();
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
       try {
-      if (jetty.getBaseUrl().getPort() == hostPort)
+      if (jetty.getLocalPort() == hostPort)
         return jetty;
       } catch (IllegalStateException e) {
         
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
index 2e84513..f11b9d02 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
@@ -73,7 +73,7 @@ public class TestCloudConsistency extends SolrCloudTestCase {
       jetty.setProxyPort(proxy.getListenPort());
       cluster.stopJettySolrRunner(jetty);//TODO: Can we avoid this restart
       cluster.startJettySolrRunner(jetty);
-      proxy.open(jetty.getBaseUrl().toURI());
+      proxy.open(new URI(jetty.getBaseUrl()));
       if (log.isInfoEnabled()) {
         log.info("Adding proxy for URL: {}. Proxy: {}", jetty.getBaseUrl(), proxy.getUrl());
       }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
index e895fe3..d08f26d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java
@@ -137,9 +137,9 @@ public class TestCloudDeleteByQuery extends SolrCloudTestCase {
     // inspired by TestMiniSolrCloudCluster
     HashMap<String, String> urlMap = new HashMap<>();
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
-      URL jettyURL = jetty.getBaseUrl();
-      String nodeKey = jettyURL.getHost() + ":" + jettyURL.getPort() + jettyURL.getPath().replace("/","_");
-      urlMap.put(nodeKey, jettyURL.toString());
+      String jettyURL = jetty.getBaseUrl();
+      String nodeKey =  (jetty.getHost() + ":" + jetty.getLocalPort() + jetty.getContext()).replace("/","_");
+      urlMap.put(nodeKey, jettyURL);
     }
     ClusterState clusterState = zkStateReader.getClusterState();
     for (Slice slice : clusterState.getCollection(COLLECTION_NAME).getSlices()) {
@@ -148,7 +148,7 @@ public class TestCloudDeleteByQuery extends SolrCloudTestCase {
       assertNotNull("slice has null leader: " + slice.toString(), leader);
       assertNotNull("slice leader has null node name: " + slice.toString(), leader.getNodeName());
       String leaderUrl = urlMap.remove(leader.getNodeName());
-      assertNotNull("could not find URL for " + shardName + " leader: " + leader.getNodeName(),
+      assertNotNull("could not find URL for " + shardName + " leader: " + leader.getNodeName() + " " + urlMap.keySet(),
                     leaderUrl);
       assertEquals("expected two total replicas for: " + slice.getName(),
                    2, slice.getReplicas().size());
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionWithEmptyReplica.java b/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionWithEmptyReplica.java
index efcd914..9bc5628 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionWithEmptyReplica.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionWithEmptyReplica.java
@@ -74,7 +74,7 @@ public class TestLeaderElectionWithEmptyReplica extends SolrCloudTestCase {
     JettySolrRunner replicaJetty = null;
     List<JettySolrRunner> jettySolrRunners = cluster.getJettySolrRunners();
     for (JettySolrRunner jettySolrRunner : jettySolrRunners) {
-      int port = jettySolrRunner.getBaseUrl().getPort();
+      int port = jettySolrRunner.getLocalPort();
       if (replica.getStr(BASE_URL_PROP).contains(":" + port))  {
         replicaJetty = jettySolrRunner;
         break;
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestPullReplicaErrorHandling.java b/solr/core/src/test/org/apache/solr/cloud/TestPullReplicaErrorHandling.java
index def0a40..63ac70d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestPullReplicaErrorHandling.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestPullReplicaErrorHandling.java
@@ -86,7 +86,7 @@ public class TestPullReplicaErrorHandling extends SolrCloudTestCase {
       cluster.stopJettySolrRunner(jetty);//TODO: Can we avoid this restart
       cluster.startJettySolrRunner(jetty);
       cluster.waitForAllNodes(30);
-      proxy.open(jetty.getBaseUrl().toURI());
+      proxy.open(new URI(jetty.getBaseUrl()));
       if (log.isInfoEnabled()) {
         log.info("Adding proxy for URL: {}. Proxy: {}", jetty.getBaseUrl(), proxy.getUrl());
       }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRebalanceLeaders.java b/solr/core/src/test/org/apache/solr/cloud/TestRebalanceLeaders.java
index 0b091c9..649f357 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestRebalanceLeaders.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestRebalanceLeaders.java
@@ -522,7 +522,7 @@ public class TestRebalanceLeaders extends SolrCloudTestCase {
 
     Set<String> downJettyNodes = new TreeSet<>();
     for (JettySolrRunner jetty : downJettys) {
-      downJettyNodes.add(jetty.getBaseUrl().getHost() + ":" + jetty.getBaseUrl().getPort() + "_solr");
+      downJettyNodes.add(jetty.getHost() + ":" + jetty.getLocalPort() + "_solr");
     }
     while (timeout.hasTimedOut() == false) {
       forceUpdateCollectionStatus();
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
index 34679d8..22ab4d9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java
@@ -137,7 +137,7 @@ public class TestStressCloudBlindAtomicUpdates extends SolrCloudTestCase {
     CLIENTS.clear();
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
       assertNotNull("Cluster contains null jetty?", jetty);
-      final URL baseUrl = jetty.getBaseUrl();
+      final String baseUrl = jetty.getBaseUrl();
       assertNotNull("Jetty has null baseUrl: " + jetty.toString(), baseUrl);
       CLIENTS.add(getHttpSolrClient(baseUrl + "/" + COLLECTION_NAME + "/"));
     }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java b/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
index 1c68306..5f630f5 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestTlogReplayVsRecovery.java
@@ -87,7 +87,7 @@ public class TestTlogReplayVsRecovery extends SolrCloudTestCase {
       jetty.setProxyPort(proxy.getListenPort());
       cluster.stopJettySolrRunner(jetty);//TODO: Can we avoid this restart
       cluster.startJettySolrRunner(jetty);
-      proxy.open(jetty.getBaseUrl().toURI());
+      proxy.open(new URI(jetty.getBaseUrl()));
       if (log.isInfoEnabled()) {
         log.info("Adding proxy for URL: {}. Proxy: {}", jetty.getBaseUrl(), proxy.getUrl());
       }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorCloud.java b/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorCloud.java
index b022950..a43e2f9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorCloud.java
@@ -128,8 +128,8 @@ public class TestTolerantUpdateProcessorCloud extends SolrCloudTestCase {
     // inspired by TestMiniSolrCloudCluster
     HashMap<String, String> urlMap = new HashMap<>();
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
-      URL jettyURL = jetty.getBaseUrl();
-      String nodeKey = jettyURL.getHost() + ":" + jettyURL.getPort() + jettyURL.getPath().replace("/","_");
+      String jettyURL = jetty.getBaseUrl();
+      String nodeKey = jetty.getHost() + ":" + jetty.getLocalPort() + jetty.getBaseUrl().replace("/","_");
       urlMap.put(nodeKey, jettyURL.toString());
     }
     zkStateReader.forceUpdateCollection(COLLECTION_NAME);
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorRandomCloud.java b/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorRandomCloud.java
index 7fadf7a..bee8a67 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorRandomCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestTolerantUpdateProcessorRandomCloud.java
@@ -115,7 +115,7 @@ public class TestTolerantUpdateProcessorRandomCloud extends SolrCloudTestCase {
     NODE_CLIENTS = new ArrayList<HttpSolrClient>(numServers);
     
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
-      URL jettyURL = jetty.getBaseUrl();
+      String jettyURL = jetty.getBaseUrl();
       NODE_CLIENTS.add(getHttpSolrClient(jettyURL.toString() + "/" + COLLECTION_NAME + "/"));
     }
     assertEquals(numServers, NODE_CLIENTS.size());
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
index 6fdb230..c4c7e04 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/ShardSplitTest.java
@@ -193,7 +193,7 @@ public class ShardSplitTest extends SolrCloudBridgeTestCase {
         String stoppedNodeName = null;
         boolean restarted = false;
         for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
-          int port = jetty.getBaseUrl().getPort();
+          int port = jetty.getLocalPort();
           if (replica.getStr(BASE_URL_PROP).contains(":" + port))  {
             stoppedNodeName = jetty.getNodeName();
             jetty.stop();
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionsAPIViaSolrCloudCluster.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionsAPIViaSolrCloudCluster.java
index 03bce06..bd1e6b8 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionsAPIViaSolrCloudCluster.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionsAPIViaSolrCloudCluster.java
@@ -140,7 +140,7 @@ public class TestCollectionsAPIViaSolrCloudCluster extends SolrCloudTestCase {
     ClusterState clusterState = zkStateReader.getClusterState();
     Map<String,JettySolrRunner> jettyMap = new HashMap<>();
     for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {
-      String key = jetty.getBaseUrl().toString().substring((jetty.getBaseUrl().getProtocol() + "://").length());
+      String key = jetty.getBaseUrl().toString().substring((System.getProperty("urlScheme") + "://").length());
       jettyMap.put(key, jetty);
     }
     Collection<Slice> slices = clusterState.getCollection(collectionName).getSlices();
@@ -257,8 +257,8 @@ public class TestCollectionsAPIViaSolrCloudCluster extends SolrCloudTestCase {
         shardLeaderMap.put(slice.getLeader().getNodeName().replace("_solr", "/solr"), Boolean.TRUE);
       }
       for (int ii = 0; ii < jettys.size(); ++ii) {
-        final URL jettyBaseUrl = jettys.get(ii).getBaseUrl();
-        final String jettyBaseUrlString = jettyBaseUrl.toString().substring((jettyBaseUrl.getProtocol() + "://").length());
+        final String jettyBaseUrl = jettys.get(ii).getBaseUrl();
+        final String jettyBaseUrlString = jettyBaseUrl.toString().substring((System.getProperty("urlScheme")+ "://").length());
         final Boolean isLeader = shardLeaderMap.get(jettyBaseUrlString);
         if (Boolean.TRUE.equals(isLeader)) {
           leaderIndices.add(ii);
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java
index a96e8c3..b9051ea 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerTest.java
@@ -112,7 +112,7 @@ public class SearchRateTriggerTest extends SolrCloudTestCase {
     CloudUtil.waitForState(cloudManager, COLL2, 60, TimeUnit.SECONDS, clusterShape(2, 2));
 
     double rate = 1.0;
-    URL baseUrl = targetNode.getBaseUrl();
+    String baseUrl = targetNode.getBaseUrl();
     long waitForSeconds = 5 + random().nextInt(5);
     Map<String, Object> props = createTriggerProps(Arrays.asList(COLL1, COLL2), waitForSeconds, rate, -1);
     final List<TriggerEvent> events = new ArrayList<>();
diff --git a/solr/core/src/test/org/apache/solr/cloud/rule/RulesTest.java b/solr/core/src/test/org/apache/solr/cloud/rule/RulesTest.java
index 0862a9d..9cfe944 100644
--- a/solr/core/src/test/org/apache/solr/cloud/rule/RulesTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/rule/RulesTest.java
@@ -263,7 +263,7 @@ public class RulesTest extends SolrCloudTestCase {
     String rulesColl = "hostFragment";
 
     JettySolrRunner jetty = cluster.getRandomJetty(random());
-    String host = jetty.getBaseUrl().getHost();
+    String host = jetty.getHost();
     String[] ipFragments = host.split("\\.");
     String ip_1 = ipFragments[ipFragments.length - 1];
     String ip_2 = ipFragments[ipFragments.length - 2];
@@ -294,7 +294,7 @@ public class RulesTest extends SolrCloudTestCase {
     String rulesColl = "ipRuleColl";
 
     JettySolrRunner jetty = cluster.getRandomJetty(random());
-    String host = jetty.getBaseUrl().getHost();
+    String host = jetty.getHost();
     String[] ipFragments = host.split("\\.");
     String ip_1 = ipFragments[ipFragments.length - 1];
     String ip_2 = ipFragments[ipFragments.length - 2];
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSystemCollAutoCreate.java b/solr/core/src/test/org/apache/solr/handler/TestSystemCollAutoCreate.java
index f21beaf..c03e14d 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSystemCollAutoCreate.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSystemCollAutoCreate.java
@@ -34,7 +34,7 @@ public class TestSystemCollAutoCreate extends SolrCloudBridgeTestCase {
 
   // commented out on: 17-Feb-2019   @BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // annotated on: 24-Dec-2018
   public void testAutoCreate() throws Exception {
-    TestBlobHandler.checkBlobPost(cluster.getJettySolrRunner(0).getBaseUrl().toExternalForm(), cloudClient);
+    TestBlobHandler.checkBlobPost(cluster.getJettySolrRunner(0).getBaseUrl(), cloudClient);
     DocCollection sysColl = cloudClient.getZkStateReader().getClusterState().getCollection(".system");
   }
 }
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperReadAPITest.java b/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperReadAPITest.java
index 87ae909b..98c83a4 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperReadAPITest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperReadAPITest.java
@@ -62,7 +62,7 @@ public class ZookeeperReadAPITest extends SolrCloudTestCase {
 
   @Test
   public void testZkread() throws Exception {
-    URL baseUrl = cluster.getJettySolrRunner(0).getBaseUrl();
+    String baseUrl = cluster.getJettySolrRunner(0).getBaseUrl();
     String basezk = baseUrl.toString().replace("/solr", "/api") + "/cluster/zk/data";
     String basezkls = baseUrl.toString().replace("/solr", "/api") + "/cluster/zk/ls";
 
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperStatusHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperStatusHandlerTest.java
index b297597..6832eec 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperStatusHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/ZookeeperStatusHandlerTest.java
@@ -78,7 +78,7 @@ public class ZookeeperStatusHandlerTest extends SolrCloudTestCase {
    */
   @Test
   public void monitorZookeeper() throws IOException, SolrServerException, InterruptedException, ExecutionException, TimeoutException {
-    URL baseUrl = cluster.getJettySolrRunner(0).getBaseUrl();
+    String baseUrl = cluster.getJettySolrRunner(0).getBaseUrl();
     HttpSolrClient solr = new HttpSolrClient.Builder(baseUrl.toString()).build();
     GenericSolrRequest mntrReq = new GenericSolrRequest(SolrRequest.METHOD.GET, "/admin/zookeeper/status", new ModifiableSolrParams());
     mntrReq.setResponseParser(new DelegationTokenResponse.JsonMapResponseParser());
diff --git a/solr/core/src/test/org/apache/solr/handler/component/ShardsWhitelistTest.java b/solr/core/src/test/org/apache/solr/handler/component/ShardsWhitelistTest.java
index 9932429..2ee5cd2 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/ShardsWhitelistTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/ShardsWhitelistTest.java
@@ -137,9 +137,8 @@ public class ShardsWhitelistTest extends MultiSolrCloudTestCase {
     assertThat(getShardHandlerFactory(IMPLICIT_CLUSTER_KEY).getWhitelistHostChecker().hasExplicitWhitelist(), is(false));
     for (MiniSolrCloudCluster cluster : clusterId2cluster.values()) {
       for (JettySolrRunner runner : cluster.getJettySolrRunners()) {
-        URI uri = runner.getBaseUrl().toURI();
         assertThat(getShardHandlerFactory(EXPLICIT_CLUSTER_KEY).getWhitelistHostChecker().getWhitelistHosts(),
-            hasItem(uri.getHost() + ":" + uri.getPort()));
+            hasItem(runner.getHost() + ":" + runner.getLocalPort()));
       }
     }
 
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java
index a5a4708..6d6dadb 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/BasicHttpSolrClientTest.java
@@ -603,7 +603,7 @@ public class BasicHttpSolrClientTest extends SolrJettyTestBase {
       BasicClientCookie cookie = new BasicClientCookie(cookieName, cookieValue);
       cookie.setVersion(0);
       cookie.setPath("/");
-      cookie.setDomain(jetty.getBaseUrl().getHost());
+      cookie.setDomain(jetty.getHost());
 
       CookieStore cookieStore = new BasicCookieStore();
       CookieSpec cookieSpec = new SolrPortAwareCookieSpecFactory().create(context);
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientSSLAuthConPoolTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientSSLAuthConPoolTest.java
index c9f7257..c6d6999 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientSSLAuthConPoolTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientSSLAuthConPoolTest.java
@@ -30,11 +30,11 @@ public class HttpSolrClientSSLAuthConPoolTest extends HttpSolrClientConPoolTest
 
     @BeforeClass
     public static void checkUrls() throws Exception {
-      URL[] urls = new URL[] {
+      String[] urls = new String[] {
           jetty.getBaseUrl(), yetty.getBaseUrl() 
       };
-      for (URL u : urls) {
-        assertEquals("expect https urls ","https", u.getProtocol());
+      for (String u : urls) {
+        assertTrue("expect https urls ", u.startsWith("https"));
       }
       assertFalse("expect different urls "+Arrays.toString(urls),
               urls[0].equals(urls[1]));
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
index c2412c4..8dfcd1f 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
@@ -849,7 +849,7 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
     runners.add(controlJetty);
     
     for (JettySolrRunner j : runners) {
-      if (replicaBaseUrl.replaceAll("/$", "").equals(j.getProxyBaseUrl().toExternalForm().replaceAll("/$", ""))) {
+      if (replicaBaseUrl.replaceAll("/$", "").equals(j.getProxyBaseUrl().replaceAll("/$", ""))) {
         return j.getProxy();
       }
     }
diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index 508d4e7..260f337 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -718,7 +718,7 @@ public class MiniSolrCloudCluster {
     String replicaBaseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
 
     for (JettySolrRunner j : jettys) {
-      if (replicaBaseUrl.replaceAll("/$", "").equals(j.getProxyBaseUrl().toExternalForm().replaceAll("/$", ""))) {
+      if (replicaBaseUrl.replaceAll("/$", "").equals(j.getProxyBaseUrl().replaceAll("/$", ""))) {
         if (j.getProxy() == null) {
           throw new IllegalStateException("proxy is not enabled for " + JettySolrRunner.class.getSimpleName());
         }
diff --git a/solr/test-framework/src/test/org/apache/solr/cloud/JettySolrRunnerTest.java b/solr/test-framework/src/test/org/apache/solr/cloud/JettySolrRunnerTest.java
index ccb0693..50534f5 100644
--- a/solr/test-framework/src/test/org/apache/solr/cloud/JettySolrRunnerTest.java
+++ b/solr/test-framework/src/test/org/apache/solr/cloud/JettySolrRunnerTest.java
@@ -43,18 +43,18 @@ public class JettySolrRunnerTest extends SolrTestCaseJ4 {
     try {
       jetty.start();
 
-      URL url = jetty.getBaseUrl();
-      int usedPort = url.getPort();
+      String url = jetty.getBaseUrl();
+      int usedPort = jetty.getLocalPort();
 
       jetty.stop();
       jetty.start();
 
-      assertEquals("After restart, jetty port should be the same", usedPort, jetty.getBaseUrl().getPort());
+      assertEquals("After restart, jetty port should be the same", usedPort, jetty.getLocalPort());
 
       jetty.stop();
       jetty.start(false, false);
 
-      assertThat("After restart, jetty port should be different", jetty.getBaseUrl().getPort(), not(usedPort));
+      assertThat("After restart, jetty port should be different", jetty.getLocalPort(), not(usedPort));
     }
     finally {
       if (jetty.isRunning())