You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/02/06 21:39:05 UTC

svn commit: r741710 - in /lucene/solr/trunk: CHANGES.txt src/java/org/apache/solr/handler/component/SearchHandler.java

Author: shalin
Date: Fri Feb  6 20:39:05 2009
New Revision: 741710

URL: http://svn.apache.org/viewvc?rev=741710&view=rev
Log:
SOLR-850 -- Addition of timeouts for distributed searching. Configurable through 'shard-socket-timeout' and 'shard-connection-timeout' parameters in SearchHandler.

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java

Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=741710&r1=741709&r2=741710&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Fri Feb  6 20:39:05 2009
@@ -150,6 +150,9 @@
 34. SOLR-943: Make it possible to specify dataDir in solr.xml and accept the dataDir as a request parameter for
     the CoreAdmin create command. (Noble Paul via shalin)
 
+25. SOLR-850: Addition of timeouts for distributed searching. Configurable through 'shard-socket-timeout' and
+    'shard-connection-timeout' parameters in SearchHandler. (Patrick O'Leary via shalin)
+
 
 Optimizations
 ----------------------

Modified: lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=741710&r1=741709&r2=741710&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/handler/component/SearchHandler.java Fri Feb  6 20:39:05 2009
@@ -55,6 +55,18 @@
   static final String INIT_FIRST_COMPONENTS = "first-components";
   static final String INIT_LAST_COMPONENTS = "last-components";
 
+  // 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
+  static final String INIT_SO_TIMEOUT = "shard-socket-timeout";
+
+  // connection timeout measures in ms, closes a socket if connection
+  // cannot be established within x ms. with a
+  // java.net.SocketTimeoutException: Connection timed out
+  static final String INIT_CONNECTION_TIMEOUT = "shard-connection-timeout";
+  static int soTimeout = 0; //current default values
+  static int connectionTimeout = 0; //current default values
+
   protected static Logger log = LoggerFactory.getLogger(SearchHandler.class);
 
   protected List<SearchComponent> components = null;
@@ -124,6 +136,18 @@
       components.add(dbgCmp);
       log.info("Adding  debug component:" + dbgCmp);
     }
+
+    Object co = initArgs.get(INIT_CONNECTION_TIMEOUT);
+    if (co != null) {
+      connectionTimeout = (Integer) co;
+      log.info("Setting shard-connection-timeout to: " + connectionTimeout);
+    }
+
+    Object so = initArgs.get(INIT_SO_TIMEOUT);
+    if (so != null) {
+      soTimeout = (Integer) so;
+      log.info("Setting shard-socket-timeout to: " + soTimeout);
+    }
   }
 
   public List<SearchComponent> getComponents() {
@@ -334,6 +358,8 @@
     MultiThreadedHttpConnectionManager mgr = new MultiThreadedHttpConnectionManager();
     mgr.getParams().setDefaultMaxConnectionsPerHost(20);
     mgr.getParams().setMaxTotalConnections(10000);
+    mgr.getParams().setConnectionTimeout(SearchHandler.connectionTimeout);
+    mgr.getParams().setSoTimeout(SearchHandler.soTimeout);
     // mgr.getParams().setStaleCheckingEnabled(false);
     client = new HttpClient(mgr);    
   }