You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2013/02/13 23:10:50 UTC

svn commit: r1445955 - in /lucene/dev/branches/branch_4x: ./ dev-tools/ dev-tools/maven/ lucene/ lucene/analysis/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/core/src/...

Author: hossman
Date: Wed Feb 13 22:10:48 2013
New Revision: 1445955

URL: http://svn.apache.org/r1445955
Log:
SOLR-4451: SolrJ, and SolrCloud internals, now use SystemDefaultHttpClient under the covers -- allowing many HTTP connection related properties to be controlled via 'standard' java system properties. (merge r1445945)

Added:
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-4.2.3.jar.sha1
      - copied unchanged from r1445945, lucene/dev/trunk/solr/licenses/httpclient-4.2.3.jar.sha1
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-4.2.3.jar.sha1
      - copied unchanged from r1445945, lucene/dev/trunk/solr/licenses/httpcore-4.2.3.jar.sha1
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-4.2.3.jar.sha1
      - copied unchanged from r1445945, lucene/dev/trunk/solr/licenses/httpmime-4.2.3.jar.sha1
Removed:
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-4.1.3.jar.sha1
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-4.1.4.jar.sha1
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-4.1.3.jar.sha1
Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/maven/pom.xml.template
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/README.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/SYSTEM_REQUIREMENTS.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java   (props changed)
    lucene/dev/branches/branch_4x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_4x/lucene/benchmark/   (props changed)
    lucene/dev/branches/branch_4x/lucene/build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/codecs/   (props changed)
    lucene/dev/branches/branch_4x/lucene/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.cfs.zip   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.nocfs.zip   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.cfs.zip   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/index.40.optimized.nocfs.zip   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/grouping/   (props changed)
    lucene/dev/branches/branch_4x/lucene/highlighter/   (props changed)
    lucene/dev/branches/branch_4x/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/join/   (props changed)
    lucene/dev/branches/branch_4x/lucene/licenses/   (props changed)
    lucene/dev/branches/branch_4x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_4x/lucene/misc/   (props changed)
    lucene/dev/branches/branch_4x/lucene/module-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/queries/   (props changed)
    lucene/dev/branches/branch_4x/lucene/queryparser/   (props changed)
    lucene/dev/branches/branch_4x/lucene/sandbox/   (props changed)
    lucene/dev/branches/branch_4x/lucene/site/   (props changed)
    lucene/dev/branches/branch_4x/lucene/spatial/   (props changed)
    lucene/dev/branches/branch_4x/lucene/suggest/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/SYSTEM_REQUIREMENTS.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/site/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/ivy.xml
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java
    lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java
    lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrServerTest.java
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/dev-tools/maven/pom.xml.template
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/dev-tools/maven/pom.xml.template?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/dev-tools/maven/pom.xml.template (original)
+++ lucene/dev/branches/branch_4x/dev-tools/maven/pom.xml.template Wed Feb 13 22:10:48 2013
@@ -48,7 +48,7 @@
     <jetty.version>8.1.8.v20121106</jetty.version>
     <slf4j.version>1.6.4</slf4j.version>
     <tika.version>1.2</tika.version>
-    <httpcomponents.version>4.1.3</httpcomponents.version>
+    <httpcomponents.version>4.2.3</httpcomponents.version>
 
     <!-- RandomizedTesting library system properties -->
     <tests.iters>1</tests.iters>

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Wed Feb 13 22:10:48 2013
@@ -49,6 +49,10 @@ New Features
 * SOLR-4370: Allow configuring commitWithin to do hard commits. 
   (Mark Miller, Senthuran Sivananthan)
 
+* SOLR-4451: SolrJ, and SolrCloud internals, now use SystemDefaultHttpClient 
+  under the covers -- allowing many HTTP connection related properties to be
+  controlled via 'standard' java system properties.  (hossman)
+
 Bug Fixes
 ----------------------
 

Modified: lucene/dev/branches/branch_4x/solr/solrj/ivy.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/ivy.xml?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/ivy.xml (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/ivy.xml Wed Feb 13 22:10:48 2013
@@ -21,9 +21,9 @@
 
     <dependencies>
       <dependency org="org.apache.zookeeper" name="zookeeper" rev="3.4.5" transitive="false"/>
-      <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.1.4" transitive="false"/>
-      <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.1.3" transitive="false"/>
-      <dependency org="org.apache.httpcomponents" name="httpmime" rev="4.1.3" transitive="false"/>
+      <dependency org="org.apache.httpcomponents" name="httpcore" rev="4.2.3" transitive="false"/>
+      <dependency org="org.apache.httpcomponents" name="httpclient" rev="4.2.3" transitive="false"/>
+      <dependency org="org.apache.httpcomponents" name="httpmime" rev="4.2.3" transitive="false"/>
       <dependency org="commons-io" name="commons-io" rev="${commons-io.version}" transitive="false"/>
       <dependency org="org.slf4j" name="jcl-over-slf4j" rev="1.6.4" transitive="false"/>
       <dependency org="org.codehaus.woodstox" name="wstx-asl" rev="3.2.7" transitive="false"/>

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java Wed Feb 13 22:10:48 2013
@@ -79,8 +79,7 @@ public class ConcurrentUpdateSolrServer 
   final int threadCount;
 
   /**
-   * Uses an internal ThreadSafeClientConnManager to manage http
-   * connections.
+   * Uses an internaly managed HttpClient instance.
    * 
    * @param solrServerUrl
    *          The Solr server URL
@@ -95,9 +94,7 @@ public class ConcurrentUpdateSolrServer 
   }
 
   /**
-   * Uses the supplied HttpClient to send documents to the Solr server, the
-   * HttpClient should be instantiated using a 
-   * ThreadSafeClientConnManager.
+   * Uses the supplied HttpClient to send documents to the Solr server.
    */
   public ConcurrentUpdateSolrServer(String solrServerUrl,
       HttpClient client, int queueSize, int threadCount) {

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientUtil.java Wed Feb 13 22:10:48 2013
@@ -35,8 +35,10 @@ import org.apache.http.client.HttpClient
 import org.apache.http.client.params.ClientParamBean;
 import org.apache.http.entity.HttpEntityWrapper;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.SystemDefaultHttpClient;
 import org.apache.http.impl.client.DefaultHttpRequestRetryHandler;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
+import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; // jdoc
+import org.apache.http.impl.conn.PoolingClientConnectionManager;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.http.protocol.HttpContext;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -94,14 +96,12 @@ public class HttpClientUtil {
    * 
    * @param params
    *          http client configuration, if null a client with default
-   *          configuration (no additional configuration) is created that uses
-   *          ThreadSafeClientConnManager.
+   *          configuration (no additional configuration) is created. 
    */
   public static HttpClient createClient(final SolrParams params) {
     final ModifiableSolrParams config = new ModifiableSolrParams(params);
     logger.info("Creating new http client, config:" + config);
-    final ThreadSafeClientConnManager mgr = new ThreadSafeClientConnManager();
-    final DefaultHttpClient httpClient = new DefaultHttpClient(mgr);
+    final DefaultHttpClient httpClient = new SystemDefaultHttpClient();
     configureClient(httpClient, config);
     return httpClient;
   }
@@ -153,25 +153,35 @@ public class HttpClientUtil {
 
   /**
    * Set max connections allowed per host. This call will only work when
-   * {@link ThreadSafeClientConnManager} is used.
+   * {@link ThreadSafeClientConnManager} or
+   * {@link PoolingClientConnectionManager} is used.
    */
   public static void setMaxConnectionsPerHost(HttpClient httpClient,
       int max) {
-    if(httpClient.getConnectionManager() instanceof ThreadSafeClientConnManager) {
+    // would have been nice if there was a common interface
+    if (httpClient.getConnectionManager() instanceof ThreadSafeClientConnManager) {
       ThreadSafeClientConnManager mgr = (ThreadSafeClientConnManager)httpClient.getConnectionManager();
       mgr.setDefaultMaxPerRoute(max);
+    } else if (httpClient.getConnectionManager() instanceof PoolingClientConnectionManager) {
+      PoolingClientConnectionManager mgr = (PoolingClientConnectionManager)httpClient.getConnectionManager();
+      mgr.setDefaultMaxPerRoute(max);
     }
   }
 
   /**
    * Set max total connections allowed. This call will only work when
-   * {@link ThreadSafeClientConnManager} is used.
+   * {@link ThreadSafeClientConnManager} or
+   * {@link PoolingClientConnectionManager} is used.
    */
   public static void setMaxConnections(final HttpClient httpClient,
       int max) {
-    if(httpClient.getConnectionManager() instanceof ThreadSafeClientConnManager) {
+    // would have been nice if there was a common interface
+    if (httpClient.getConnectionManager() instanceof ThreadSafeClientConnManager) {
       ThreadSafeClientConnManager mgr = (ThreadSafeClientConnManager)httpClient.getConnectionManager();
       mgr.setMaxTotal(max);
+    } else if (httpClient.getConnectionManager() instanceof PoolingClientConnectionManager) {
+      PoolingClientConnectionManager mgr = (PoolingClientConnectionManager)httpClient.getConnectionManager();
+      mgr.setMaxTotal(max);
     }
   }
   

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpClientUtilTest.java Wed Feb 13 22:10:48 2013
@@ -23,8 +23,8 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.http.auth.AuthScope;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.params.ClientPNames;
+import org.apache.http.impl.conn.PoolingClientConnectionManager;
 import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
@@ -52,9 +52,9 @@ public class HttpClientUtilTest {
     params.set(HttpClientUtil.PROP_USE_RETRY, false);
     DefaultHttpClient client = (DefaultHttpClient) HttpClientUtil.createClient(params);
     assertEquals(12345, HttpConnectionParams.getConnectionTimeout(client.getParams()));
-    assertEquals(ThreadSafeClientConnManager.class, client.getConnectionManager().getClass());
-    assertEquals(22345, ((ThreadSafeClientConnManager)client.getConnectionManager()).getMaxTotal());
-    assertEquals(32345, ((ThreadSafeClientConnManager)client.getConnectionManager()).getDefaultMaxPerRoute());
+    assertEquals(PoolingClientConnectionManager.class, client.getConnectionManager().getClass());
+    assertEquals(22345, ((PoolingClientConnectionManager)client.getConnectionManager()).getMaxTotal());
+    assertEquals(32345, ((PoolingClientConnectionManager)client.getConnectionManager()).getDefaultMaxPerRoute());
     assertEquals(42345, HttpConnectionParams.getSoTimeout(client.getParams()));
     assertEquals(HttpClientUtil.NO_RETRY, client.getHttpRequestRetryHandler());
     assertEquals("pass", client.getCredentialsProvider().getCredentials(new AuthScope("127.0.0.1", 1234)).getPassword());

Modified: lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrServerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrServerTest.java?rev=1445955&r1=1445954&r2=1445955&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrServerTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrServerTest.java Wed Feb 13 22:10:48 2013
@@ -7,7 +7,6 @@ import static org.junit.Assert.*;
 
 import java.net.MalformedURLException;
 
-import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.solr.client.solrj.ResponseParser;
 import org.junit.Test;
 
@@ -28,6 +27,8 @@ import org.junit.Test;
  * limitations under the License.
  */
 
+import org.apache.solr.common.params.ModifiableSolrParams;
+
 /**
  * Test the LBHttpSolrServer.
  */
@@ -42,14 +43,14 @@ public class LBHttpSolrServerTest {
    */
   @Test
   public void testLBHttpSolrServerHttpClientResponseParserStringArray() throws MalformedURLException {
-    LBHttpSolrServer testServer = new LBHttpSolrServer(new DefaultHttpClient(), (ResponseParser) null);
+    LBHttpSolrServer testServer = new LBHttpSolrServer(HttpClientUtil.createClient(new ModifiableSolrParams()), (ResponseParser) null);
     HttpSolrServer httpServer = testServer.makeServer("http://127.0.0.1:8080");
     assertNull("Generated server should have null parser.", httpServer.getParser());
 
     ResponseParser parser = new BinaryResponseParser();
-    testServer = new LBHttpSolrServer(new DefaultHttpClient(), parser);
+    testServer = new LBHttpSolrServer(HttpClientUtil.createClient(new ModifiableSolrParams()), parser);
     httpServer = testServer.makeServer("http://127.0.0.1:8080");
     assertEquals("Invalid parser passed to generated server.", parser, httpServer.getParser());
   }
   
-}
\ No newline at end of file
+}