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 2015/01/09 18:45:39 UTC

svn commit: r1650612 [2/3] - in /lucene/dev/branches/branch_5x: ./ solr/ solr/contrib/ solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/ solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/ solr/core/ so...

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CustomCollectionTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CustomCollectionTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CustomCollectionTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/CustomCollectionTest.java Fri Jan  9 17:45:38 2015
@@ -20,8 +20,8 @@ package org.apache.solr.cloud;
 import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
 import static org.apache.solr.cloud.OverseerCollectionProcessor.ROUTER;
 import static org.apache.solr.cloud.OverseerCollectionProcessor.SHARDS_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
 import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
+import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
 import static org.apache.solr.common.params.ShardParams._ROUTE_;
 
 import java.util.ArrayList;
@@ -40,6 +40,8 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.lucene.util.TestUtil;
+import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
+import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -65,6 +67,7 @@ import org.junit.BeforeClass;
  * Tests the Custom Sharding API.
  */
 @Slow
+@SuppressSSL(bugUrl = "https://issues.apache.org/jira/browse/SOLR-5776")
 public class CustomCollectionTest extends AbstractFullDistribZkTestBase {
 
   private static final String DEFAULT_COLLECTION = "collection1";
@@ -223,135 +226,140 @@ public class CustomCollectionTest extend
 
     String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
 
+    String shard_fld = "shard_s";
     HttpSolrClient collectionClient = new HttpSolrClient(url);
+    try {
 
-
-    // lets try and use the solrj client to index a couple documents
-
-    collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
-        "humpty dumpy sat on a wall", _ROUTE_,"a"));
-
-    collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
-        "humpty dumpy3 sat on a walls", _ROUTE_,"a"));
-
-    collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
-        "humpty dumpy2 sat on a walled", _ROUTE_,"a"));
-
-    collectionClient.commit();
-
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"b")).getResults().getNumFound());
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"a")).getResults().getNumFound());
-
-    collectionClient.deleteByQuery("*:*");
-    collectionClient.commit(true,true);
-    assertEquals(0, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-
-    UpdateRequest up = new UpdateRequest();
-    up.setParam(_ROUTE_, "c");
-    up.setParam("commit","true");
-
-    up.add(getDoc(id, 9, i1, -600, tlong, 600, t1,
-        "humpty dumpy sat on a wall"));
-    up.add(getDoc(id, 10, i1, -600, tlong, 600, t1,
-        "humpty dumpy3 sat on a walls"));
-    up.add(getDoc(id, 11, i1, -600, tlong, 600, t1,
-        "humpty dumpy2 sat on a walled"));
-
-    collectionClient.request(up);
-
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"a")).getResults().getNumFound());
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"c")).getResults().getNumFound());
-
-    //Testing CREATESHARD
-    ModifiableSolrParams params = new ModifiableSolrParams();
-    params.set("action", CollectionAction.CREATESHARD.toString());
-    params.set("collection", collectionName);
-    params.set("shard", "x");
-    SolrRequest request = new QueryRequest(params);
-    request.setPath("/admin/collections");
-    createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0))).request(request);
-    waitForCollection(zkStateReader,collectionName,4);
-    //wait for all the replicas to become active
-    int attempts = 0;
-    while(true){
-      if(attempts>30 ) fail("Not enough active replicas in the shard 'x'");
-      attempts++;
-      int activeReplicaCount = 0;
-      for (Replica x : zkStateReader.getClusterState().getCollection(collectionName).getSlice("x").getReplicas()) {
-        if("active".equals(x.getStr("state"))) activeReplicaCount++;
+      // lets try and use the solrj client to index a couple documents
+  
+      collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
+          "humpty dumpy sat on a wall", _ROUTE_,"a"));
+  
+      collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
+          "humpty dumpy3 sat on a walls", _ROUTE_,"a"));
+  
+      collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
+          "humpty dumpy2 sat on a walled", _ROUTE_,"a"));
+  
+      collectionClient.commit();
+  
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
+      assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"b")).getResults().getNumFound());
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"a")).getResults().getNumFound());
+  
+      collectionClient.deleteByQuery("*:*");
+      collectionClient.commit(true,true);
+      assertEquals(0, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
+  
+      UpdateRequest up = new UpdateRequest();
+      up.setParam(_ROUTE_, "c");
+      up.setParam("commit","true");
+  
+      up.add(getDoc(id, 9, i1, -600, tlong, 600, t1,
+          "humpty dumpy sat on a wall"));
+      up.add(getDoc(id, 10, i1, -600, tlong, 600, t1,
+          "humpty dumpy3 sat on a walls"));
+      up.add(getDoc(id, 11, i1, -600, tlong, 600, t1,
+          "humpty dumpy2 sat on a walled"));
+  
+      collectionClient.request(up);
+  
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
+      assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"a")).getResults().getNumFound());
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"c")).getResults().getNumFound());
+  
+      //Testing CREATESHARD
+      ModifiableSolrParams params = new ModifiableSolrParams();
+      params.set("action", CollectionAction.CREATESHARD.toString());
+      params.set("collection", collectionName);
+      params.set("shard", "x");
+      SolrRequest request = new QueryRequest(params);
+      request.setPath("/admin/collections");
+      SolrClient server = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
+      server.request(request);
+      server.shutdown();
+      waitForCollection(zkStateReader,collectionName,4);
+      //wait for all the replicas to become active
+      int attempts = 0;
+      while(true){
+        if(attempts>30 ) fail("Not enough active replicas in the shard 'x'");
+        attempts++;
+        int activeReplicaCount = 0;
+        for (Replica x : zkStateReader.getClusterState().getCollection(collectionName).getSlice("x").getReplicas()) {
+          if("active".equals(x.getStr("state"))) activeReplicaCount++;
+        }
+        Thread.sleep(500);
+        if(activeReplicaCount >= replicationFactor) break;
       }
-      Thread.sleep(500);
-      if(activeReplicaCount >= replicationFactor) break;
+      log.info(zkStateReader.getClusterState().toString());
+  
+      collectionClient.add(getDoc(id, 66, i1, -600, tlong, 600, t1,
+          "humpty dumpy sat on a wall", _ROUTE_,"x"));
+      collectionClient.commit();
+      assertEquals(1, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"x")).getResults().getNumFound());
+  
+  
+      int numShards = 4;
+      replicationFactor = TestUtil.nextInt(random(), 0, 3) + 2;
+      int maxShardsPerNode = (((numShards * replicationFactor) / getCommonCloudSolrClient()
+          .getZkStateReader().getClusterState().getLiveNodes().size())) + 1;
+  
+  
+      CloudSolrClient client = null;
+      try {
+        client = createCloudClient(null);
+        Map<String, Object> props = ZkNodeProps.makeMap(
+            "router.name", ImplicitDocRouter.NAME,
+            REPLICATION_FACTOR, replicationFactor,
+            MAX_SHARDS_PER_NODE, maxShardsPerNode,
+            SHARDS_PROP,"a,b,c,d",
+            "router.field", shard_fld);
+  
+        collectionName = COLL_PREFIX + "withShardField";
+        createCollection(collectionInfos, collectionName,props,client);
+      } finally {
+        if (client != null) client.shutdown();
+      }
+  
+      List<Integer> list = collectionInfos.get(collectionName);
+      checkForCollection(collectionName, list, null);
+  
+  
+      url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
+    } finally {
+      collectionClient.shutdown();
     }
-    log.info(zkStateReader.getClusterState().toString());
-
-    collectionClient.add(getDoc(id, 66, i1, -600, tlong, 600, t1,
-        "humpty dumpy sat on a wall", _ROUTE_,"x"));
-    collectionClient.commit();
-    assertEquals(1, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"x")).getResults().getNumFound());
-
-
-    int numShards = 4;
-    replicationFactor = TestUtil.nextInt(random(), 0, 3) + 2;
-    int maxShardsPerNode = (((numShards * replicationFactor) / getCommonCloudSolrClient()
-        .getZkStateReader().getClusterState().getLiveNodes().size())) + 1;
-
-
-    CloudSolrClient client = null;
-    String shard_fld = "shard_s";
+    collectionClient = new HttpSolrClient(url);
     try {
-      client = createCloudClient(null);
-      Map<String, Object> props = ZkNodeProps.makeMap(
-          "router.name", ImplicitDocRouter.NAME,
-          REPLICATION_FACTOR, replicationFactor,
-          MAX_SHARDS_PER_NODE, maxShardsPerNode,
-          SHARDS_PROP,"a,b,c,d",
-          "router.field", shard_fld);
-
-      collectionName = COLL_PREFIX + "withShardField";
-      createCollection(collectionInfos, collectionName,props,client);
+      // poll for a second - it can take a moment before we are ready to serve
+      waitForNon403or404or503(collectionClient);
     } finally {
-      if (client != null) client.shutdown();
+      collectionClient.shutdown();
     }
 
-    List<Integer> list = collectionInfos.get(collectionName);
-    checkForCollection(collectionName, list, null);
-
-
-    url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
-    
-    collectionClient.shutdown();
-    collectionClient = new HttpSolrClient(url);
 
-    // poll for a second - it can take a moment before we are ready to serve
-    waitForNon403or404or503(collectionClient);
-
-
-
-    collectionClient.shutdown();
-    collectionClient = new HttpSolrClient(url);
-
-
-    // lets try and use the solrj client to index a couple documents
-
-    collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
-        "humpty dumpy sat on a wall", shard_fld,"a"));
-
-    collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
-        "humpty dumpy3 sat on a walls", shard_fld,"a"));
-
-    collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
-        "humpty dumpy2 sat on a walled", shard_fld,"a"));
-
-    collectionClient.commit();
-
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"b")).getResults().getNumFound());
-    //TODO debug the following case
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "a")).getResults().getNumFound());
-    collectionClient.shutdown();
+      collectionClient = new HttpSolrClient(url);
+      try {
+      // lets try and use the solrj client to index a couple documents
+  
+      collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
+          "humpty dumpy sat on a wall", shard_fld,"a"));
+  
+      collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
+          "humpty dumpy3 sat on a walls", shard_fld,"a"));
+  
+      collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
+          "humpty dumpy2 sat on a walled", shard_fld,"a"));
+  
+      collectionClient.commit();
+  
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
+      assertEquals(0, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_,"b")).getResults().getNumFound());
+      //TODO debug the following case
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "a")).getResults().getNumFound());
+    } finally {
+      collectionClient.shutdown();
+    }
   }
 
   private void testRouteFieldForHashRouter()throws Exception{
@@ -384,39 +392,43 @@ public class CustomCollectionTest extend
     String url = getUrlFromZk(getCommonCloudSolrClient().getZkStateReader().getClusterState(), collectionName);
 
     HttpSolrClient collectionClient = new HttpSolrClient(url);
-
-    // poll for a second - it can take a moment before we are ready to serve
-    waitForNon403or404or503(collectionClient);
-    collectionClient.shutdown();
+    try {
+      // poll for a second - it can take a moment before we are ready to serve
+      waitForNon403or404or503(collectionClient);
+      collectionClient.shutdown();
+    } finally {
+      collectionClient.shutdown();
+    }
 
 
     collectionClient = new HttpSolrClient(url);
-
-
-    // lets try and use the solrj client to index a couple documents
-
-    collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
-        "humpty dumpy sat on a wall", shard_fld,"a"));
-
-    collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
-        "humpty dumpy3 sat on a walls", shard_fld,"a"));
-
-    collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
-        "humpty dumpy2 sat on a walled", shard_fld,"a"));
-
-    collectionClient.commit();
-
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
-    //TODO debug the following case
-    assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "a")).getResults().getNumFound());
-
-    collectionClient.deleteByQuery("*:*");
-    collectionClient.commit();
-
-    collectionClient.add (getDoc( id,100,shard_fld, "b!doc1"));
-    collectionClient.commit();
-    assertEquals(1, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "b!")).getResults().getNumFound());
-    collectionClient.shutdown();
+    try {
+      // lets try and use the solrj client to index a couple documents
+  
+      collectionClient.add(getDoc(id, 6, i1, -600, tlong, 600, t1,
+          "humpty dumpy sat on a wall", shard_fld,"a"));
+  
+      collectionClient.add(getDoc(id, 7, i1, -600, tlong, 600, t1,
+          "humpty dumpy3 sat on a walls", shard_fld,"a"));
+  
+      collectionClient.add(getDoc(id, 8, i1, -600, tlong, 600, t1,
+          "humpty dumpy2 sat on a walled", shard_fld,"a"));
+  
+      collectionClient.commit();
+  
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*")).getResults().getNumFound());
+      //TODO debug the following case
+      assertEquals(3, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "a")).getResults().getNumFound());
+  
+      collectionClient.deleteByQuery("*:*");
+      collectionClient.commit();
+  
+      collectionClient.add (getDoc( id,100,shard_fld, "b!doc1"));
+      collectionClient.commit();
+      assertEquals(1, collectionClient.query(new SolrQuery("*:*").setParam(_ROUTE_, "b!")).getResults().getNumFound());
+    } finally {
+      collectionClient.shutdown();
+    }
   }
 
   private void testCreateShardRepFactor() throws Exception  {
@@ -445,7 +457,9 @@ public class CustomCollectionTest extend
     params.set("shard", "x");
     SolrRequest request = new QueryRequest(params);
     request.setPath("/admin/collections");
-    createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0))).request(request);
+    SolrClient server = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
+    server.request(request);
+    server.shutdown();
 
     waitForRecoveriesToFinish(collectionName, zkStateReader, false);
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/DeleteShardTest.java Fri Jan  9 17:45:38 2015
@@ -147,11 +147,14 @@ public class DeleteShardTest extends Abs
         .getBaseURL();
     baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
 
-    HttpSolrClient baseClient = new HttpSolrClient(baseUrl);
-    baseClient.setConnectionTimeout(15000);
-    baseClient.setSoTimeout(60000);
-    baseClient.request(request);
-    baseClient.shutdown();
+    HttpSolrClient baseServer = new HttpSolrClient(baseUrl);
+    try {
+      baseServer.setConnectionTimeout(15000);
+      baseServer.setSoTimeout(60000);
+      baseServer.request(request);
+    } finally {
+      baseServer.shutdown();
+    }
   }
 
   protected void setSliceState(String slice, String state) throws SolrServerException, IOException,

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderFailoverAfterPartitionTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderFailoverAfterPartitionTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderFailoverAfterPartitionTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderFailoverAfterPartitionTest.java Fri Jan  9 17:45:38 2015
@@ -17,15 +17,17 @@ package org.apache.solr.cloud;
  * limitations under the License.
  */
 
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
+import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.common.cloud.Replica;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Tests leader-initiated recovery scenarios after a leader node fails
@@ -109,10 +111,20 @@ public class LeaderFailoverAfterPartitio
     // indexing during a partition
     // doc should be on leader and 1 replica
     sendDoc(5);
-
-    assertDocExists(getHttpSolrClient(leader, testCollectionName), testCollectionName, "5");
-    assertDocExists(getHttpSolrClient(notLeaders.get(1), testCollectionName), testCollectionName, "5");
-
+    
+    HttpSolrClient server = getHttpSolrClient(leader, testCollectionName);
+    try {
+      assertDocExists(server, testCollectionName, "5");
+    } finally {
+      server.shutdown();
+    }
+    try {
+      server = getHttpSolrClient(notLeaders.get(1), testCollectionName);
+      assertDocExists(server, testCollectionName, "5");
+    } finally {
+      server.shutdown();
+    }
+  
     Thread.sleep(sleepMsBeforeHealPartition);
     
     String shouldNotBeNewLeaderNode = notLeaders.get(0).getNodeName();
@@ -160,12 +172,14 @@ public class LeaderFailoverAfterPartitio
             printClusterStateInfo(testCollectionName),
         participatingReplicas.size() >= 2);
 
+    
     sendDoc(6);
 
+
     Set<String> replicasToCheck = new HashSet<>();
     for (Replica stillUp : participatingReplicas)
       replicasToCheck.add(stillUp.getName());
-    waitToSeeReplicasActive(testCollectionName, "shard1", replicasToCheck, 20);
+    waitToSeeReplicasActive(testCollectionName, "shard1", replicasToCheck, 90);
     assertDocsExistInAllReplicas(participatingReplicas, testCollectionName, 1, 6);
 
     // try to clean up

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderInitiatedRecoveryOnCommitTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderInitiatedRecoveryOnCommitTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderInitiatedRecoveryOnCommitTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/LeaderInitiatedRecoveryOnCommitTest.java Fri Jan  9 17:45:38 2015
@@ -91,8 +91,12 @@ public class LeaderInitiatedRecoveryOnCo
 
     // let's find the leader of shard2 and ask him to commit
     Replica shard2Leader = cloudClient.getZkStateReader().getLeaderRetry(testCollectionName, "shard2");
-    HttpSolrClient client = new HttpSolrClient(ZkCoreNodeProps.getCoreUrl(shard2Leader.getStr("base_url"), shard2Leader.getStr("core")));
-    client.commit();
+    HttpSolrClient server = new HttpSolrClient(ZkCoreNodeProps.getCoreUrl(shard2Leader.getStr("base_url"), shard2Leader.getStr("core")));
+    try {
+      server.commit();
+    } finally {
+      server.shutdown();
+    }
 
     Thread.sleep(sleepMsBeforeHealPartition);
 
@@ -135,6 +139,7 @@ public class LeaderInitiatedRecoveryOnCo
     Replica replica = notLeaders.get(0);
     HttpSolrClient client = new HttpSolrClient(ZkCoreNodeProps.getCoreUrl(replica.getStr("base_url"), replica.getStr("core")));
     client.commit();
+    client.shutdown();
 
     Thread.sleep(sleepMsBeforeHealPartition);
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/MultiThreadedOCPTest.java Fri Jan  9 17:45:38 2015
@@ -77,130 +77,141 @@ public class MultiThreadedOCPTest extend
 
   private void testParallelCollectionAPICalls() throws IOException, SolrServerException {
     SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
-
-    for(int i = 1 ; i <= NUM_COLLECTIONS ; i++) {
-      Create createCollectionRequest = new Create();
-      createCollectionRequest.setCollectionName("ocptest" + i);
-      createCollectionRequest.setNumShards(4);
-      createCollectionRequest.setConfigName("conf1");
-      createCollectionRequest.setAsyncId(String.valueOf(i));
-      createCollectionRequest.process(client);
-    }
-
-    boolean pass = false;
-    int counter = 0;
-    while(true) {
-      int numRunningTasks = 0;
-      for (int i = 1; i <= NUM_COLLECTIONS; i++)
-        if (getRequestState(i + "", client).equals("running"))
-          numRunningTasks++;
-      if(numRunningTasks > 1) {
-        pass = true;
-        break;
-      } else if(counter++ > 100)
-        break;
-      try {
-        Thread.sleep(100);
-      } catch (InterruptedException e) {
-        Thread.currentThread().interrupt();
+    try {
+      for(int i = 1 ; i <= NUM_COLLECTIONS ; i++) {
+        Create createCollectionRequest = new Create();
+        createCollectionRequest.setCollectionName("ocptest" + i);
+        createCollectionRequest.setNumShards(4);
+        createCollectionRequest.setConfigName("conf1");
+        createCollectionRequest.setAsyncId(String.valueOf(i));
+        createCollectionRequest.process(client);
+      }
+  
+      boolean pass = false;
+      int counter = 0;
+      while(true) {
+        int numRunningTasks = 0;
+        for (int i = 1; i <= NUM_COLLECTIONS; i++)
+          if (getRequestState(i + "", client).equals("running"))
+            numRunningTasks++;
+        if(numRunningTasks > 1) {
+          pass = true;
+          break;
+        } else if(counter++ > 100)
+          break;
+        try {
+          Thread.sleep(100);
+        } catch (InterruptedException e) {
+          Thread.currentThread().interrupt();
+        }
       }
-    }
-    assertTrue("More than one tasks were supposed to be running in parallel but they weren't.", pass);
-    for(int i=1;i<=NUM_COLLECTIONS;i++) {
-      String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
-      assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
+      assertTrue("More than one tasks were supposed to be running in parallel but they weren't.", pass);
+      for(int i=1;i<=NUM_COLLECTIONS;i++) {
+        String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
+        assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
+      }
+    } finally {
+      client.shutdown();
     }
   }
 
   private void testTaskExclusivity() throws IOException, SolrServerException {
     SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
-    Create createCollectionRequest = new Create();
-    createCollectionRequest.setCollectionName("ocptest_shardsplit");
-    createCollectionRequest.setNumShards(4);
-    createCollectionRequest.setConfigName("conf1");
-    createCollectionRequest.setAsyncId("1000");
-    createCollectionRequest.process(client);
-
-    SplitShard splitShardRequest = new SplitShard();
-    splitShardRequest.setCollectionName("ocptest_shardsplit");
-    splitShardRequest.setShardName(SHARD1);
-    splitShardRequest.setAsyncId("1001");
-    splitShardRequest.process(client);
-
-    splitShardRequest = new SplitShard();
-    splitShardRequest.setCollectionName("ocptest_shardsplit");
-    splitShardRequest.setShardName(SHARD2);
-    splitShardRequest.setAsyncId("1002");
-    splitShardRequest.process(client);
-
-    int iterations = 0;
-    while(true) {
-      int runningTasks = 0;
-      int completedTasks = 0;
+    try {
+      Create createCollectionRequest = new Create();
+      createCollectionRequest.setCollectionName("ocptest_shardsplit");
+      createCollectionRequest.setNumShards(4);
+      createCollectionRequest.setConfigName("conf1");
+      createCollectionRequest.setAsyncId("1000");
+      createCollectionRequest.process(client);
+  
+      SplitShard splitShardRequest = new SplitShard();
+      splitShardRequest.setCollectionName("ocptest_shardsplit");
+      splitShardRequest.setShardName(SHARD1);
+      splitShardRequest.setAsyncId("1001");
+      splitShardRequest.process(client);
+  
+      splitShardRequest = new SplitShard();
+      splitShardRequest.setCollectionName("ocptest_shardsplit");
+      splitShardRequest.setShardName(SHARD2);
+      splitShardRequest.setAsyncId("1002");
+      splitShardRequest.process(client);
+  
+      int iterations = 0;
+      while(true) {
+        int runningTasks = 0;
+        int completedTasks = 0;
+        for (int i=1001;i<=1002;i++) {
+          String state = getRequestState(i, client);
+          if (state.equals("running"))
+            runningTasks++;
+          if (state.equals("completed"))
+            completedTasks++;
+          assertTrue("We have a failed SPLITSHARD task", !state.equals("failed"));
+        }
+        // TODO: REQUESTSTATUS might come back with more than 1 running tasks over multiple calls.
+        // The only way to fix this is to support checking of multiple requestids in a single REQUESTSTATUS task.
+        
+        assertTrue("Mutual exclusion failed. Found more than one task running for the same collection", runningTasks < 2);
+  
+        if(completedTasks == 2 || iterations++ > REQUEST_STATUS_TIMEOUT)
+          break;
+  
+        try {
+          Thread.sleep(1000);
+        } catch (InterruptedException e) {
+          Thread.currentThread().interrupt();
+          return;
+        }
+      }
       for (int i=1001;i<=1002;i++) {
-        String state = getRequestState(i, client);
-        if (state.equals("running"))
-          runningTasks++;
-        if (state.equals("completed"))
-          completedTasks++;
-        assertTrue("We have a failed SPLITSHARD task", !state.equals("failed"));
-      }
-      // TODO: REQUESTSTATUS might come back with more than 1 running tasks over multiple calls.
-      // The only way to fix this is to support checking of multiple requestids in a single REQUESTSTATUS task.
-      
-      assertTrue("Mutual exclusion failed. Found more than one task running for the same collection", runningTasks < 2);
-
-      if(completedTasks == 2 || iterations++ > REQUEST_STATUS_TIMEOUT)
-        break;
-
-      try {
-        Thread.sleep(1000);
-      } catch (InterruptedException e) {
-        Thread.currentThread().interrupt();
-        return;
+        String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
+        assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
       }
-    }
-    for (int i=1001;i<=1002;i++) {
-      String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
-      assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
+    } finally {
+      client.shutdown();
     }
   }
 
   private void testDeduplicationOfSubmittedTasks() throws IOException, SolrServerException {
     SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
-    Create createCollectionRequest = new Create();
-    createCollectionRequest.setCollectionName("ocptest_shardsplit2");
-    createCollectionRequest.setNumShards(4);
-    createCollectionRequest.setConfigName("conf1");
-    createCollectionRequest.setAsyncId("3000");
-    createCollectionRequest.process(client);
-
-    SplitShard splitShardRequest = new SplitShard();
-    splitShardRequest.setCollectionName("ocptest_shardsplit2");
-    splitShardRequest.setShardName(SHARD1);
-    splitShardRequest.setAsyncId("3001");
-    splitShardRequest.process(client);
-
-    splitShardRequest = new SplitShard();
-    splitShardRequest.setCollectionName("ocptest_shardsplit2");
-    splitShardRequest.setShardName(SHARD2);
-    splitShardRequest.setAsyncId("3002");
-    splitShardRequest.process(client);
-
-    // Now submit another task with the same id. At this time, hopefully the previous 3002 should still be in the queue.
-    splitShardRequest = new SplitShard();
-    splitShardRequest.setCollectionName("ocptest_shardsplit2");
-    splitShardRequest.setShardName(SHARD1);
-    splitShardRequest.setAsyncId("3002");
-    CollectionAdminResponse response = splitShardRequest.process(client);
-
-    NamedList r = response.getResponse();
-    assertEquals("Duplicate request was supposed to exist but wasn't found. De-duplication of submitted task failed.",
-        "Task with the same requestid already exists.", r.get("error"));
-
-    for (int i=3001;i<=3002;i++) {
-      String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
-      assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
+    try {
+      Create createCollectionRequest = new Create();
+      createCollectionRequest.setCollectionName("ocptest_shardsplit2");
+      createCollectionRequest.setNumShards(4);
+      createCollectionRequest.setConfigName("conf1");
+      createCollectionRequest.setAsyncId("3000");
+      createCollectionRequest.process(client);
+  
+      SplitShard splitShardRequest = new SplitShard();
+      splitShardRequest.setCollectionName("ocptest_shardsplit2");
+      splitShardRequest.setShardName(SHARD1);
+      splitShardRequest.setAsyncId("3001");
+      splitShardRequest.process(client);
+  
+      splitShardRequest = new SplitShard();
+      splitShardRequest.setCollectionName("ocptest_shardsplit2");
+      splitShardRequest.setShardName(SHARD2);
+      splitShardRequest.setAsyncId("3002");
+      splitShardRequest.process(client);
+  
+      // Now submit another task with the same id. At this time, hopefully the previous 3002 should still be in the queue.
+      splitShardRequest = new SplitShard();
+      splitShardRequest.setCollectionName("ocptest_shardsplit2");
+      splitShardRequest.setShardName(SHARD1);
+      splitShardRequest.setAsyncId("3002");
+      CollectionAdminResponse response = splitShardRequest.process(client);
+  
+      NamedList r = response.getResponse();
+      assertEquals("Duplicate request was supposed to exist but wasn't found. De-duplication of submitted task failed.",
+          "Task with the same requestid already exists.", r.get("error"));
+  
+      for (int i=3001;i<=3002;i++) {
+        String state = getRequestStateAfterCompletion(i + "", REQUEST_STATUS_TIMEOUT, client);
+        assertTrue("Task " + i + " did not complete, final state: " + state,state.equals("completed"));
+      }
+    } finally {
+      client.shutdown();
     }
   }
 
@@ -221,10 +232,9 @@ public class MultiThreadedOCPTest extend
       }
     };
     indexThread.start();
-
+    SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
     try {
 
-      SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
       SplitShard splitShardRequest = new SplitShard();
       splitShardRequest.setCollectionName("collection1");
       splitShardRequest.setShardName(SHARD1);
@@ -258,6 +268,8 @@ public class MultiThreadedOCPTest extend
         indexThread.join();
       } catch (InterruptedException e) {
         log.warn("Indexing thread interrupted.");
+      } finally {
+        client.shutdown();
       }
     }
   }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java Fri Jan  9 17:45:38 2015
@@ -71,6 +71,8 @@ public class OverseerTest extends SolrTe
   
   private List<Overseer> overseers = new ArrayList<>();
   private List<ZkStateReader> readers = new ArrayList<>();
+  private List<HttpShardHandlerFactory> httpShardHandlerFactorys = new ArrayList<>();
+  private List<UpdateShardHandler> updateShardHandlers = new ArrayList<>();
   
   private String collection = "collection1";
   
@@ -205,6 +207,16 @@ public class OverseerTest extends SolrTe
       reader.close();
     }
     readers.clear();
+    
+    for (HttpShardHandlerFactory handlerFactory : httpShardHandlerFactorys) {
+      handlerFactory.close();
+    }
+    httpShardHandlerFactorys.clear();
+    
+    for (UpdateShardHandler updateShardHandler : updateShardHandlers) {
+      updateShardHandler.close();
+    }
+    updateShardHandlers.clear();
   }
 
   @Test
@@ -1118,8 +1130,11 @@ public class OverseerTest extends SolrTe
       overseers.get(overseers.size() -1).getZkStateReader().getZkClient().close();
     }
     UpdateShardHandler updateShardHandler = new UpdateShardHandler(null);
+    updateShardHandlers.add(updateShardHandler);
+    HttpShardHandlerFactory httpShardHandlerFactory = new HttpShardHandlerFactory();
+    httpShardHandlerFactorys.add(httpShardHandlerFactory);
     Overseer overseer = new Overseer(
-        new HttpShardHandlerFactory().getShardHandler(), updateShardHandler, "/admin/cores", reader, null, new MockConfigSolr());
+        httpShardHandlerFactory.getShardHandler(), updateShardHandler, "/admin/cores", reader, null, new MockConfigSolr());
     overseers.add(overseer);
     ElectionContext ec = new OverseerElectionContext(zkClient, overseer,
         address.replaceAll("/", "_"));

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java Fri Jan  9 17:45:38 2015
@@ -525,11 +525,14 @@ public class ShardSplitTest extends Basi
         .getBaseURL();
     baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
 
-    HttpSolrClient baseClient = new HttpSolrClient(baseUrl);
-    baseClient.setConnectionTimeout(30000);
-    baseClient.setSoTimeout(60000 * 5);
-    baseClient.request(request);
-    baseClient.shutdown();
+    HttpSolrClient baseServer = new HttpSolrClient(baseUrl);
+    try {
+      baseServer.setConnectionTimeout(30000);
+      baseServer.setSoTimeout(60000 * 5);
+      baseServer.request(request);
+    } finally {
+      baseServer.shutdown();
+    }
   }
 
   protected void indexAndUpdateCount(DocRouter router, List<DocRouter.Range> ranges, int[] docCounts, String id, int n) throws Exception {

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SolrXmlInZkTest.java Fri Jan  9 17:45:38 2015
@@ -29,6 +29,7 @@ import org.apache.solr.common.cloud.ZkSt
 import org.apache.solr.core.ConfigSolr;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.servlet.SolrDispatchFilter;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -52,10 +53,19 @@ public class SolrXmlInZkTest extends Sol
 
   private ConfigSolr cfg;
 
+  private SolrDispatchFilter solrDispatchFilter;
+
   @Before
-  public void beforeClass() {
+  public void before() {
     System.setProperty("solr.solrxml.location", "zookeeper");
   }
+  
+  @After
+  public void after() {
+    if (solrDispatchFilter != null) {
+      solrDispatchFilter.destroy();
+    }
+  }
 
   private void setUpZkAndDiskXml(boolean toZk, boolean leaveOnLocal) throws Exception {
     File tmpDir = createTempDir().toFile();
@@ -96,8 +106,9 @@ public class SolrXmlInZkTest extends Sol
 
     Method method = SolrDispatchFilter.class.getDeclaredMethod("loadConfigSolr", SolrResourceLoader.class);
     method.setAccessible(true);
-
-    Object obj = method.invoke(new SolrDispatchFilter(), new SolrResourceLoader(null));
+    if (solrDispatchFilter != null) solrDispatchFilter.destroy();
+    solrDispatchFilter = new SolrDispatchFilter();
+    Object obj = method.invoke(solrDispatchFilter, new SolrResourceLoader(null));
     cfg = (ConfigSolr) obj;
 
     log.info("####SETUP_END " + getTestName());
@@ -200,7 +211,9 @@ public class SolrXmlInZkTest extends Sol
     try {
       Method method = SolrDispatchFilter.class.getDeclaredMethod("loadConfigSolr", SolrResourceLoader.class);
       method.setAccessible(true);
-      method.invoke(new SolrDispatchFilter(), new SolrResourceLoader(null));
+      if (solrDispatchFilter != null) solrDispatchFilter.destroy();
+      solrDispatchFilter = new SolrDispatchFilter();
+      method.invoke(solrDispatchFilter, new SolrResourceLoader(null));
       fail("Should have thrown an exception");
     } catch (InvocationTargetException ite) {
       assertTrue("Should be catching a SolrException", ite.getTargetException() instanceof SolrException);

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestLeaderElectionZkExpiry.java Fri Jan  9 17:45:38 2015
@@ -45,7 +45,6 @@ public class TestLeaderElectionZkExpiry
       server.run();
       AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
       AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
-      cc.load();
 
       final ZkController zkController = new ZkController(cc, server.getZkAddress(), 15000, 30000, "dummy.host.com", "8984", "/solr", 180000, 180000, true, new CurrentCoreDescriptorProvider() {
         @Override

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestRequestStatusCollectionAPI.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestRequestStatusCollectionAPI.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestRequestStatusCollectionAPI.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestRequestStatusCollectionAPI.java Fri Jan  9 17:45:38 2015
@@ -218,8 +218,10 @@ public class TestRequestStatusCollection
         .getBaseURL();
     baseUrl = baseUrl.substring(0, baseUrl.length() - "collection1".length());
 
-    HttpSolrClient baseClient = new HttpSolrClient(baseUrl);
-    baseClient.setConnectionTimeout(15000);
-    return baseClient.request(request);
+    HttpSolrClient baseServer = new HttpSolrClient(baseUrl);
+    baseServer.setConnectionTimeout(15000);
+    NamedList<Object> resp = baseServer.request(request);
+    baseServer.shutdown();
+    return resp;
   }
 }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java Fri Jan  9 17:45:38 2015
@@ -35,9 +35,7 @@ import org.apache.solr.core.CoreDescript
 import org.apache.solr.core.CoresLocator;
 import org.apache.solr.handler.admin.CoreAdminHandler;
 import org.apache.solr.handler.component.HttpShardHandlerFactory;
-import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.update.UpdateShardHandler;
-import org.apache.solr.util.ExternalPaths;
 import org.apache.zookeeper.CreateMode;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestCoreDiscovery.java Fri Jan  9 17:45:38 2015
@@ -110,7 +110,12 @@ public class TestCoreDiscovery extends S
 
   private CoreContainer init() throws Exception {
     final CoreContainer cores = new CoreContainer();
-    cores.load();
+    try {
+      cores.load();
+    } catch (Exception e) {
+      cores.shutdown();
+      throw e;
+    }
     return cores;
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestDynamicLoading.java Fri Jan  9 17:45:38 2015
@@ -26,6 +26,7 @@ import org.apache.solr.handler.TestBlobH
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.apache.solr.util.SimplePostTool;
+import org.junit.After;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,16 +56,18 @@ public class TestDynamicLoading extends
     }
   }
 
-
+  @After
+  public void testDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness r : restTestHarnesses) {
+      r.close();
+    }
+  }
 
   @Override
   public void doTest() throws Exception {
-
    setupHarnesses();
    dynamicLoading();
-
-
-
   }
 
   private void dynamicLoading() throws Exception {
@@ -201,6 +204,4 @@ public class TestDynamicLoading extends
     return bos.getByteBuffer();
   }
 
-
-
 }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestImplicitCoreProperties.java Fri Jan  9 17:45:38 2015
@@ -30,7 +30,6 @@ public class TestImplicitCoreProperties
 
     CoreContainer cc = createCoreContainer(TEST_HOME(), SOLRXML);
     try {
-      cc.load();
       assertQ(req("q", "*:*")
               , "//str[@name='dummy1'][.='collection1']"
               , "//str[@name='dummy2'][.='data"+File.separator+"']"

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/TestSolrConfigHandler.java Fri Jan  9 17:45:38 2015
@@ -92,6 +92,9 @@ public class TestSolrConfigHandler exten
       jetty = null;
     }
     client = null;
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
     restTestHarness = null;
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java Fri Jan  9 17:45:38 2015
@@ -60,46 +60,48 @@ public class TestBlobHandler extends Abs
 
   private void doBlobHandlerTest() throws Exception {
     SolrClient client = createNewSolrClient("", getBaseUrl((HttpSolrClient) clients.get(0)));
-
-    CollectionAdminResponse response1;
-    CollectionAdminRequest.Create createCollectionRequest = new CollectionAdminRequest.Create();
-    createCollectionRequest.setCollectionName(".system");
-    createCollectionRequest.setNumShards(1);
-    createCollectionRequest.setReplicationFactor(2);
-    response1 = createCollectionRequest.process(client);
-    assertEquals(0, response1.getStatus());
-    assertTrue(response1.isSuccess());
-    DocCollection sysColl = cloudClient.getZkStateReader().getClusterState().getCollection(".system");
-    Replica replica = sysColl.getActiveSlicesMap().values().iterator().next().getLeader();
-
-    String baseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
-    String url = baseUrl + "/.system/config/requestHandler";
-    Map map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
-    assertNotNull(map);
-    assertEquals("solr.BlobHandler", getObjectByPath(map, true, Arrays.asList(
-        "config",
-        "requestHandler",
-        "/blob",
-        "class")));
-
-    byte[] bytarr  = new byte[1024];
-    for (int i = 0; i < bytarr.length; i++) bytarr[i]= (byte) (i % 127);
-    byte[] bytarr2  = new byte[2048];
-    for (int i = 0; i < bytarr2.length; i++) bytarr2[i]= (byte) (i % 127);
-    postAndCheck(cloudClient, baseUrl, ByteBuffer.wrap( bytarr), 1);
-    postAndCheck(cloudClient, baseUrl, ByteBuffer.wrap( bytarr2), 2);
-
-    url = baseUrl + "/.system/blob/test/1";
-    map = TestSolrConfigHandlerConcurrent.getAsMap(url,cloudClient);
-    List l = (List) ConfigOverlay.getObjectByPath(map, false, Arrays.asList("response", "docs"));
-    assertNotNull(""+map, l);
-    assertTrue("" + map, l.size() > 0);
-    map = (Map) l.get(0);
-    assertEquals(""+bytarr.length,String.valueOf(map.get("size")));
-
-    compareInputAndOutput(baseUrl+"/.system/blob/test?wt=filestream", bytarr2);
-    compareInputAndOutput(baseUrl+"/.system/blob/test/1?wt=filestream", bytarr);
-
+    try {
+      CollectionAdminResponse response1;
+      CollectionAdminRequest.Create createCollectionRequest = new CollectionAdminRequest.Create();
+      createCollectionRequest.setCollectionName(".system");
+      createCollectionRequest.setNumShards(1);
+      createCollectionRequest.setReplicationFactor(2);
+      response1 = createCollectionRequest.process(client);
+      assertEquals(0, response1.getStatus());
+      assertTrue(response1.isSuccess());
+      DocCollection sysColl = cloudClient.getZkStateReader().getClusterState().getCollection(".system");
+      Replica replica = sysColl.getActiveSlicesMap().values().iterator().next().getLeader();
+
+      String baseUrl = replica.getStr(ZkStateReader.BASE_URL_PROP);
+      String url = baseUrl + "/.system/config/requestHandler";
+      Map map = TestSolrConfigHandlerConcurrent.getAsMap(url, cloudClient);
+      assertNotNull(map);
+      assertEquals("solr.BlobHandler", getObjectByPath(map, true, Arrays.asList(
+          "config",
+          "requestHandler",
+          "/blob",
+          "class")));
+
+      byte[] bytarr  = new byte[1024];
+      for (int i = 0; i < bytarr.length; i++) bytarr[i]= (byte) (i % 127);
+      byte[] bytarr2  = new byte[2048];
+      for (int i = 0; i < bytarr2.length; i++) bytarr2[i]= (byte) (i % 127);
+      postAndCheck(cloudClient, baseUrl, ByteBuffer.wrap( bytarr), 1);
+      postAndCheck(cloudClient, baseUrl, ByteBuffer.wrap( bytarr2), 2);
+
+      url = baseUrl + "/.system/blob/test/1";
+      map = TestSolrConfigHandlerConcurrent.getAsMap(url,cloudClient);
+      List l = (List) ConfigOverlay.getObjectByPath(map, false, Arrays.asList("response", "docs"));
+      assertNotNull(""+map, l);
+      assertTrue("" + map, l.size() > 0);
+      map = (Map) l.get(0);
+      assertEquals(""+bytarr.length,String.valueOf(map.get("size")));
+
+      compareInputAndOutput(baseUrl+"/.system/blob/test?wt=filestream", bytarr2);
+      compareInputAndOutput(baseUrl+"/.system/blob/test/1?wt=filestream", bytarr);
+    } finally {
+      client.shutdown();
+    }
   }
 
   public static  void createSysColl(SolrClient client) throws SolrServerException, IOException {

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestConfigReload.java Fri Jan  9 17:45:38 2015
@@ -17,6 +17,9 @@ package org.apache.solr.handler;
  * limitations under the License.
  */
 
+import static java.util.Arrays.asList;
+import static org.apache.solr.core.ConfigOverlay.getObjectByPath;
+
 import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
 import java.text.MessageFormat;
@@ -44,14 +47,12 @@ import org.apache.solr.util.RestTestHarn
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.data.Stat;
+import org.junit.After;
 import org.noggit.JSONParser;
 import org.noggit.ObjectBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static java.util.Arrays.asList;
-import static org.apache.solr.core.ConfigOverlay.getObjectByPath;
-
 public class TestConfigReload extends AbstractFullDistribZkTestBase {
 
 
@@ -69,11 +70,25 @@ public class TestConfigReload extends Ab
       restTestHarnesses.add(harness);
     }
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness h : restTestHarnesses) {
+      h.close();
+    }
+  }
 
   @Override
   public void doTest() throws Exception {
     setupHarnesses();
-    reloadTest();
+    try {
+      reloadTest();
+    } finally {
+      for (RestTestHarness h : restTestHarnesses) {
+        h.close();
+      }
+    }
   }
 
   private void reloadTest() throws Exception {

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Fri Jan  9 17:45:38 2015
@@ -905,6 +905,9 @@ public class TestReplicationHandler exte
         repeater.tearDown();
         repeaterJetty = null;
       }
+      if (repeaterClient != null) {
+        repeaterClient.shutdown();
+      }
     }
     
   }

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerCloud.java Fri Jan  9 17:45:38 2015
@@ -35,6 +35,7 @@ import org.apache.solr.core.ConfigOverla
 import org.apache.solr.core.TestSolrConfigHandler;
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
+import org.junit.After;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,13 +54,20 @@ public class TestSolrConfigHandlerCloud
       restTestHarnesses.add(harness);
     }
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness r : restTestHarnesses) {
+      r.close();
+    }
+  }
 
   @Override
   public void doTest() throws Exception {
     setupHarnesses();
     testReqHandlerAPIs();
     testReqParams();
-
   }
 
   private void testReqHandlerAPIs() throws Exception {

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java Fri Jan  9 17:45:38 2015
@@ -17,6 +17,10 @@ package org.apache.solr.handler;
  * limitations under the License.
  */
 
+import static java.util.Arrays.asList;
+import static org.apache.solr.core.ConfigOverlay.getObjectByPath;
+import static org.noggit.ObjectBuilder.getVal;
+
 import java.io.IOException;
 import java.io.StringReader;
 import java.nio.charset.StandardCharsets;
@@ -44,15 +48,12 @@ import org.apache.solr.common.cloud.ZkSt
 import org.apache.solr.core.ConfigOverlay;
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
+import org.junit.After;
 import org.noggit.JSONParser;
 import org.noggit.ObjectBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static java.util.Arrays.asList;
-import static org.apache.solr.core.ConfigOverlay.getObjectByPath;
-import static org.noggit.ObjectBuilder.getVal;
-
 
 public class TestSolrConfigHandlerConcurrent extends AbstractFullDistribZkTestBase {
 
@@ -71,6 +72,14 @@ public class TestSolrConfigHandlerConcur
       restTestHarnesses.add(harness);
     }
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness h : restTestHarnesses) {
+      h.close();
+    }
+  }
 
   @Override
   public void doTest() throws Exception {
@@ -133,15 +142,24 @@ public class TestSolrConfigHandlerConcur
     Set<String> errmessages = new HashSet<>();
     for(int i =1;i<2;i++){//make it  ahigher number
       RestTestHarness publisher = restTestHarnesses.get(r.nextInt(restTestHarnesses.size()));
-      payload = payload.replaceAll("CACHENAME" , cacheName);
-      String val1 = String.valueOf(10 * i + 1);
-      payload = payload.replace("CACHEVAL1", val1);
-      String val2 = String.valueOf(10 * i + 2);
-      payload = payload.replace("CACHEVAL2", val2);
-      String val3 = String.valueOf(10 * i + 3);
-      payload = payload.replace("CACHEVAL3", val3);
-
-      String response = publisher.post("/config?wt=json", SolrTestCaseJ4.json(payload));
+      String response;
+      String val1;
+      String val2;
+      String val3;
+      try {
+        payload = payload.replaceAll("CACHENAME" , cacheName);
+        val1 = String.valueOf(10 * i + 1);
+        payload = payload.replace("CACHEVAL1", val1);
+        val2 = String.valueOf(10 * i + 2);
+        payload = payload.replace("CACHEVAL2", val2);
+        val3 = String.valueOf(10 * i + 3);
+        payload = payload.replace("CACHEVAL3", val3);
+  
+        response = publisher.post("/config?wt=json", SolrTestCaseJ4.json(payload));
+      } finally {
+        publisher.close();
+      }
+      
       Map map = (Map) getVal(new JSONParser(new StringReader(response)));
       Object errors = map.get("errors");
       if(errors!= null){

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestBulkSchemaAPI.java Fri Jan  9 17:45:38 2015
@@ -73,6 +73,9 @@ public class TestBulkSchemaAPI extends R
       jetty = null;
     }
     client = null;
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
     restTestHarness = null;
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaDynamicFieldResource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaDynamicFieldResource.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaDynamicFieldResource.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaDynamicFieldResource.java Fri Jan  9 17:45:38 2015
@@ -63,6 +63,9 @@ public class TestManagedSchemaDynamicFie
       jetty = null;
     }
     client = null;
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
     restTestHarness = null;
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldResource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldResource.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldResource.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldResource.java Fri Jan  9 17:45:38 2015
@@ -63,6 +63,9 @@ public class TestManagedSchemaFieldResou
       jetty = null;
     }
     client = null;
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
     restTestHarness = null;
   }
   

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldTypeResource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldTypeResource.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldTypeResource.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestManagedSchemaFieldTypeResource.java Fri Jan  9 17:45:38 2015
@@ -66,6 +66,11 @@ public class TestManagedSchemaFieldTypeR
     jetty = null;
     System.clearProperty("managed.schema.mutable");
     System.clearProperty("enable.update.log");
+    
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
+    restTestHarness = null;
   }
   
   @Test

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedStopFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedStopFilterFactory.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedStopFilterFactory.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedStopFilterFactory.java Fri Jan  9 17:45:38 2015
@@ -66,6 +66,11 @@ public class TestManagedStopFilterFactor
     jetty = null;
     System.clearProperty("managed.schema.mutable");
     System.clearProperty("enable.update.log");
+    
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
+    restTestHarness = null;
   }
 
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedSynonymFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedSynonymFilterFactory.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedSynonymFilterFactory.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/analysis/TestManagedSynonymFilterFactory.java Fri Jan  9 17:45:38 2015
@@ -63,6 +63,11 @@ public class TestManagedSynonymFilterFac
     FileUtils.deleteDirectory(tmpSolrHome);
     System.clearProperty("managed.schema.mutable");
     System.clearProperty("enable.update.log");
+    
+    if (restTestHarness != null) {
+      restTestHarness.close();
+    }
+    restTestHarness = null;
   }
   
   @Test

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBinaryField.java Fri Jan  9 17:45:38 2015
@@ -14,11 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.solr.schema;
 
+import java.io.File;
+import java.nio.ByteBuffer;
+import java.util.List;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.SolrJettyTestBase;
 import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.beans.Field;
@@ -28,10 +34,7 @@ import org.apache.solr.common.SolrDocume
 import org.apache.solr.common.SolrInputDocument;
 import org.junit.BeforeClass;
 
-import java.io.File;
-import java.nio.ByteBuffer;
-import java.util.List;
-
+@SuppressSSL(bugUrl = "https://issues.apache.org/jira/browse/SOLR-5776")
 public class TestBinaryField extends SolrJettyTestBase {
 
   @BeforeClass
@@ -86,6 +89,7 @@ public class TestBinaryField extends Sol
     client.commit();
 
     QueryResponse resp = client.query(new SolrQuery("*:*"));
+    client.shutdown();
     SolrDocumentList res = resp.getResults();
     List<Bean> beans = resp.getBeans(Bean.class);
     assertEquals(3, res.size());

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestBulkSchemaConcurrent.java Fri Jan  9 17:45:38 2015
@@ -18,6 +18,20 @@ package org.apache.solr.schema;
  */
 
 
+import static java.text.MessageFormat.format;
+import static org.apache.solr.rest.schema.TestBulkSchemaAPI.getCopyFields;
+import static org.apache.solr.rest.schema.TestBulkSchemaAPI.getObj;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -25,26 +39,13 @@ import org.apache.solr.cloud.AbstractFul
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
+import org.junit.After;
 import org.junit.BeforeClass;
 import org.noggit.JSONParser;
 import org.noggit.ObjectBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import static java.text.MessageFormat.format;
-import static org.apache.solr.rest.schema.TestBulkSchemaAPI.getCopyFields;
-import static org.apache.solr.rest.schema.TestBulkSchemaAPI.getObj;
-
 public class TestBulkSchemaConcurrent  extends AbstractFullDistribZkTestBase {
   static final Logger log =  LoggerFactory.getLogger(TestBulkSchemaConcurrent.class);
   private List<RestTestHarness> restTestHarnesses = new ArrayList<>();
@@ -70,6 +71,15 @@ public class TestBulkSchemaConcurrent  e
       restTestHarnesses.add(harness);
     }
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness r : restTestHarnesses) {
+      r.close();
+    }
+  }
+  
   @Override
   public void doTest() throws Exception {
 
@@ -105,7 +115,6 @@ public class TestBulkSchemaConcurrent  e
     boolean success = true;
 
     for (List e : collectErrors) {
-      if(e== null) continue;
       if(!e.isEmpty()){
         success = false;
         log.error(e.toString());
@@ -166,27 +175,31 @@ public class TestBulkSchemaConcurrent  e
     }
 
     //get another node
-    RestTestHarness harness = restTestHarnesses.get(r.nextInt(restTestHarnesses.size()));
-    long startTime = System.nanoTime();
-    boolean success = false;
-    long maxTimeoutMillis = 100000;
     Set<String> errmessages = new HashSet<>();
-    while ( ! success
-        && TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutMillis) {
-      errmessages.clear();
-      Map m = getObj(harness, aField, "fields");
-      if(m== null) errmessages.add(format("field {0} not created", aField));
-
-      m = getObj(harness, dynamicFldName, "dynamicFields");
-      if(m== null) errmessages.add(format("dynamic field {0} not created", dynamicFldName));
-
-      List l = getCopyFields(harness, "a1");
-      if(!checkCopyField(l,aField,dynamicCopyFldDest))
-        errmessages.add(format("CopyField source={0},dest={1} not created" , aField,dynamicCopyFldDest));
-
-      m = getObj(harness, "mystr", "fieldTypes");
-      if(m == null) errmessages.add(format("new type {}  not created" , newFieldTypeName));
-      Thread.sleep(10);
+    RestTestHarness harness = restTestHarnesses.get(r.nextInt(restTestHarnesses.size()));
+    try {
+      long startTime = System.nanoTime();
+      boolean success = false;
+      long maxTimeoutMillis = 100000;
+      while (!success
+          && TimeUnit.MILLISECONDS.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS) < maxTimeoutMillis) {
+        errmessages.clear();
+        Map m = getObj(harness, aField, "fields");
+        if (m == null) errmessages.add(format("field {0} not created", aField));
+        
+        m = getObj(harness, dynamicFldName, "dynamicFields");
+        if (m == null) errmessages.add(format("dynamic field {0} not created", dynamicFldName));
+        
+        List l = getCopyFields(harness, "a1");
+        if (!checkCopyField(l, aField, dynamicCopyFldDest)) errmessages
+            .add(format("CopyField source={0},dest={1} not created", aField, dynamicCopyFldDest));
+        
+        m = getObj(harness, "mystr", "fieldTypes");
+        if (m == null) errmessages.add(format("new type {}  not created", newFieldTypeName));
+        Thread.sleep(10);
+      }
+    } finally {
+      harness.close();
     }
     if(!errmessages.isEmpty()){
       errs.addAll(errmessages);

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchemaConcurrent.java Fri Jan  9 17:45:38 2015
@@ -16,6 +16,12 @@ package org.apache.solr.schema;
  * limitations under the License.
  */
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -25,25 +31,17 @@ import org.apache.solr.common.cloud.Repl
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
-import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.util.BaseTestHarness;
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
+import org.apache.zookeeper.data.Stat;
 import org.eclipse.jetty.servlet.ServletHolder;
+import org.junit.After;
+import org.junit.BeforeClass;
 import org.restlet.ext.servlet.ServerServlet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.zookeeper.data.Stat;
-
-import org.junit.BeforeClass;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedMap;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-
 public class TestCloudManagedSchemaConcurrent extends AbstractFullDistribZkTestBase {
   private static final Logger log = LoggerFactory.getLogger(TestCloudManagedSchemaConcurrent.class);
   private static final String SUCCESS_XPATH = "/response/lst[@name='responseHeader']/int[@name='status'][.='0']";
@@ -67,6 +65,14 @@ public class TestCloudManagedSchemaConcu
     System.setProperty("managed.schema.mutable", "true");
     System.setProperty("enable.update.log", "true");
   }
+  
+  @After
+  public void tearDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness h : restTestHarnesses) {
+      h.close();
+    }
+  }
 
   @Override
   protected String getCloudSolrConfig() {
@@ -352,8 +358,11 @@ public class TestCloudManagedSchemaConcu
         return coreUrl.endsWith("/") ? coreUrl.substring(0, coreUrl.length()-1) : coreUrl;
       }
     });
-
-    addFieldTypePut(harness, "fooInt", 15);
+    try {
+      addFieldTypePut(harness, "fooInt", 15);
+    } finally {
+      harness.close();
+    }
 
     // go into ZK to get the version of the managed schema after the update
     SolrZkClient zkClient = cloudClient.getZkStateReader().getZkClient();
@@ -410,21 +419,24 @@ public class TestCloudManagedSchemaConcu
         return replicaUrl.endsWith("/") ? replicaUrl.substring(0, replicaUrl.length()-1) : replicaUrl;
       }
     });
-
-    long waitMs = waitSecs * 1000L;
-    if (waitMs > 0) Thread.sleep(waitMs); // wait a moment for the zk watcher to fire
-
     try {
-      testHarness.validateQuery("/schema/zkversion?wt=xml", "//zkversion=" + schemaZkVersion);
-    } catch (Exception exc) {
-      if (retry) {
-        // brief wait before retrying
-        Thread.sleep(waitMs > 0 ? waitMs : 2000L);
-
+      long waitMs = waitSecs * 1000L;
+      if (waitMs > 0) Thread.sleep(waitMs); // wait a moment for the zk watcher to fire
+  
+      try {
         testHarness.validateQuery("/schema/zkversion?wt=xml", "//zkversion=" + schemaZkVersion);
-      } else {
-        throw exc;
+      } catch (Exception exc) {
+        if (retry) {
+          // brief wait before retrying
+          Thread.sleep(waitMs > 0 ? waitMs : 2000L);
+  
+          testHarness.validateQuery("/schema/zkversion?wt=xml", "//zkversion=" + schemaZkVersion);
+        } else {
+          throw exc;
+        }
       }
+    } finally {
+      testHarness.close();
     }
   }
 

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/schema/TestCloudSchemaless.java Fri Jan  9 17:45:38 2015
@@ -27,6 +27,7 @@ import org.apache.solr.util.BaseTestHarn
 import org.apache.solr.util.RESTfulServerProvider;
 import org.apache.solr.util.RestTestHarness;
 import org.eclipse.jetty.servlet.ServletHolder;
+import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Before;
 import org.restlet.ext.servlet.ServerServlet;
@@ -58,6 +59,14 @@ public class TestCloudSchemaless extends
 
     System.setProperty("numShards", Integer.toString(sliceCount));
   }
+  
+  @After
+  public void teardDown() throws Exception {
+    super.tearDown();
+    for (RestTestHarness h : restTestHarnesses) {
+      h.close();
+    }
+  }
 
   public TestCloudSchemaless() {
     schemaString = "schema-add-schema-fields-update-processor.xml";

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/AnalyticsMergeStrategyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/AnalyticsMergeStrategyTest.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/AnalyticsMergeStrategyTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/AnalyticsMergeStrategyTest.java Fri Jan  9 17:45:38 2015
@@ -23,8 +23,6 @@ import org.apache.solr.common.params.Mod
 import org.apache.solr.common.util.NamedList;
 import org.junit.BeforeClass;
 
-import java.util.Arrays;
-
 /**
  * Test for QueryComponent's distributed querying
  *

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/search/TestRecoveryHdfs.java Fri Jan  9 17:45:38 2015
@@ -19,7 +19,6 @@ package org.apache.solr.search;
 
 import static org.apache.solr.update.processor.DistributingUpdateProcessorFactory.DISTRIB_UPDATE_PARAM;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -42,15 +41,14 @@ import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.cloud.hdfs.HdfsBasicDistributedZk2Test;
 import org.apache.solr.cloud.hdfs.HdfsTestUtil;
+import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.update.DirectUpdateHandler2;
 import org.apache.solr.update.HdfsUpdateLog;
 import org.apache.solr.update.UpdateHandler;
 import org.apache.solr.update.UpdateLog;
 import org.apache.solr.update.processor.DistributedUpdateProcessor.DistribPhase;
-import org.apache.solr.util.IOUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;

Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java Fri Jan  9 17:45:38 2015
@@ -1055,7 +1055,7 @@ public class CloudSolrClient extends Sol
     }
     
     if (clientIsInternal && myClient!=null) {
-      myClient.getConnectionManager().shutdown();
+      HttpClientUtil.close(myClient);
     }
 
     if(this.threadPool != null && !this.threadPool.isShutdown()) {

Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientConfigurer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientConfigurer.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientConfigurer.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientConfigurer.java Fri Jan  9 17:45:38 2015
@@ -29,7 +29,7 @@ import org.apache.solr.common.params.Sol
  */
 public class HttpClientConfigurer {
   
-  protected void configure(DefaultHttpClient httpClient, SolrParams config) {
+  public void configure(DefaultHttpClient httpClient, SolrParams config) {
     
     if (config.get(HttpClientUtil.PROP_MAX_CONNECTIONS) != null) {
       HttpClientUtil.setMaxConnections(httpClient,

Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java Fri Jan  9 17:45:38 2015
@@ -38,6 +38,7 @@ import org.apache.http.conn.scheme.Schem
 import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.conn.ssl.X509HostnameVerifier;
 import org.apache.http.entity.HttpEntityWrapper;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
 import org.apache.http.impl.client.SystemDefaultHttpClient;
@@ -54,7 +55,6 @@ import org.slf4j.LoggerFactory;
  * Utility class for creating/configuring httpclient instances. 
  */
 public class HttpClientUtil {
-  
   // socket timeout measured in ms, closes a socket if read
   // takes longer than x ms to complete. throws
   // java.net.SocketTimeoutException: Read timed out exception
@@ -109,7 +109,7 @@ public class HttpClientUtil {
    *          http client configuration, if null a client with default
    *          configuration (no additional configuration) is created. 
    */
-  public static HttpClient createClient(final SolrParams params) {
+  public static CloseableHttpClient createClient(final SolrParams params) {
     final ModifiableSolrParams config = new ModifiableSolrParams(params);
     if (logger.isDebugEnabled()) {
       logger.debug("Creating new http client, config:" + config);
@@ -123,7 +123,7 @@ public class HttpClientUtil {
    * Creates new http client by using the provided configuration.
    * 
    */
-  public static HttpClient createClient(final SolrParams params, ClientConnectionManager cm) {
+  public static CloseableHttpClient createClient(final SolrParams params, ClientConnectionManager cm) {
     final ModifiableSolrParams config = new ModifiableSolrParams(params);
     if (logger.isDebugEnabled()) {
       logger.debug("Creating new http client, config:" + config);
@@ -141,6 +141,14 @@ public class HttpClientUtil {
       SolrParams config) {
     configurer.configure(httpClient,  config);
   }
+  
+  public static void close(HttpClient httpClient) { 
+    if (httpClient instanceof CloseableHttpClient) {
+      org.apache.solr.common.util.IOUtils.closeQuietly((CloseableHttpClient) httpClient);
+    } else {
+      httpClient.getConnectionManager().shutdown();
+    }
+  }
 
   /**
    * Control HTTP payload compression.
@@ -269,6 +277,14 @@ public class HttpClientUtil {
     }
   }
   
+  public static void setStaleCheckingEnabled(final HttpClient httpClient, boolean enabled) {
+    HttpConnectionParams.setStaleCheckingEnabled(httpClient.getParams(), enabled);
+  }
+  
+  public static void setTcpNoDelay(final HttpClient httpClient, boolean tcpNoDelay) {
+    HttpConnectionParams.setTcpNoDelay(httpClient.getParams(), tcpNoDelay);
+  }
+  
   private static class UseCompressionRequestInterceptor implements
       HttpRequestInterceptor {
     

Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClient.java Fri Jan  9 17:45:38 2015
@@ -754,7 +754,7 @@ public class HttpSolrClient extends Solr
   @Override
   public void shutdown() {
     if (httpClient != null && internalClient) {
-      httpClient.getConnectionManager().shutdown();
+      HttpClientUtil.close(httpClient);
     }
   }
 

Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java?rev=1650612&r1=1650611&r2=1650612&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttpSolrClient.java Fri Jan  9 17:45:38 2015
@@ -457,7 +457,7 @@ public class LBHttpSolrClient extends So
       aliveCheckExecutor.shutdownNow();
     }
     if(clientIsInternal) {
-      httpClient.getConnectionManager().shutdown();
+      HttpClientUtil.close(httpClient);
     }
   }