Author: tommaso
Date: Mon Sep 11 12:23:53 2017
New Revision: 1808022

URL: http://svn.apache.org/viewvc?rev=1808022&view=rev
Log:
OAK-6646 - set connection timeouts in Solr index

Modified:
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
    
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
 Mon Sep 11 12:23:53 2017
@@ -26,6 +26,8 @@ import org.apache.jackrabbit.oak.plugins
 public class RemoteSolrServerConfiguration extends 
SolrServerConfiguration<RemoteSolrServerProvider> {
 
     private final String solrConfDir;
+    private final int socketTimeout;
+    private final int connectionTimeout;
     private final String[] solrHttpUrls;
     private final String solrZkHost;
     private final String solrCollection;
@@ -33,7 +35,9 @@ public class RemoteSolrServerConfigurati
     private final int solrReplicationFactor;
 
     public RemoteSolrServerConfiguration(String solrZkHost, String 
solrCollection, int solrShardsNo, int solrReplicationFactor,
-                                         String solrConfDir, String... 
solrHttpUrls) {
+                                         String solrConfDir, int 
socketTimeout, int connectionTimeout, String... solrHttpUrls) {
+        this.socketTimeout = socketTimeout;
+        this.connectionTimeout = connectionTimeout;
         this.solrHttpUrls = solrHttpUrls;
         this.solrZkHost = solrZkHost;
         this.solrCollection = solrCollection;
@@ -66,10 +70,20 @@ public class RemoteSolrServerConfigurati
         return solrConfDir;
     }
 
+    public int getSocketTimeout() {
+        return socketTimeout;
+    }
+
+    public int getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
     @Override
     public String toString() {
         return "RemoteSolrServerConfiguration{" +
                 "solrConfDir='" + solrConfDir + '\'' +
+                ", socketTimeout=" + socketTimeout +
+                ", connectionTimeout=" + connectionTimeout +
                 ", solrHttpUrls=" + Arrays.toString(solrHttpUrls) +
                 ", solrZkHost='" + solrZkHost + '\'' +
                 ", solrCollection='" + solrCollection + '\'' +

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationDefaults.java
 Mon Sep 11 12:23:53 2017
@@ -35,5 +35,6 @@ public class SolrServerConfigurationDefa
     public static final int SHARDS_NO = 2;
     public static final int REPLICATION_FACTOR = 2;
     public static final String CONFIGURATION_DIRECTORY = "";
-
+    public static final int SOCKET_TIMEOUT = 3000;
+    public static final int CONNECTION_TIMEOUT = 3000;
 }

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java
 Mon Sep 11 12:23:53 2017
@@ -81,8 +81,11 @@ public class NodeStateSolrServerConfigur
             String solrHttpUrls = getStringValueFor(Properties.HTTP_URL, 
SolrServerConfigurationDefaults.HTTP_URL);
             int solrShardsNo = getIntValueFor(Properties.SHARDS_NO, 
SolrServerConfigurationDefaults.SHARDS_NO);
 
+            int socketTimeout = getIntValueFor(Properties.SOCKET_TIMEOUT, 
SolrServerConfigurationDefaults.SOCKET_TIMEOUT);
+            int connectionTimeout = 
getIntValueFor(Properties.CONNECTION_TIMEOUT, 
SolrServerConfigurationDefaults.CONNECTION_TIMEOUT);
+
             return (SolrServerConfiguration) new 
RemoteSolrServerConfiguration(solrZkHost, solrCollection, solrShardsNo,
-                    solrReplicationFactor, solrConfDir, solrHttpUrls);
+                    solrReplicationFactor, solrConfDir, socketTimeout, 
connectionTimeout, solrHttpUrls);
         } else {
             throw new RuntimeException("unexpected Solr server type: " + type);
         }
@@ -107,6 +110,8 @@ public class NodeStateSolrServerConfigur
         public static final String CONFIGURATION_DIRECTORY = 
"configurationDirectory";
         public static final String HTTP_URL = "httpUrl";
         public static final String SHARDS_NO = "shardsNo";
+        public static final String CONNECTION_TIMEOUT = "connectionTimeout";
+        public static final String SOCKET_TIMEOUT = "socketTimeout";
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/RemoteSolrServerConfigurationProvider.java
 Mon Sep 11 12:23:53 2017
@@ -47,6 +47,12 @@ public class RemoteSolrServerConfigurati
     @Property(value = SolrServerConfigurationDefaults.COLLECTION, label = 
"Solr collection")
     private static final String SOLR_COLLECTION = "solr.collection";
 
+    @Property(intValue = SolrServerConfigurationDefaults.SOCKET_TIMEOUT, label 
= "Socket timeout (ms)")
+    private static final String SOCKET_TIMEOUT = "solr.socket.timeout";
+
+    @Property(intValue = SolrServerConfigurationDefaults.CONNECTION_TIMEOUT, 
label = "Connection timeout (ms)")
+    private static final String CONNECTION_TIMEOUT = "solr.connection.timeout";
+
     @Property(intValue = SolrServerConfigurationDefaults.SHARDS_NO, label = 
"No. of collection shards")
     private static final String SOLR_SHARDS_NO = "solr.shards.no";
 
@@ -72,7 +78,10 @@ public class RemoteSolrServerConfigurati
         solrShardsNo = 
Integer.valueOf(componentContext.getProperties().get(SOLR_SHARDS_NO).toString());
         solrReplicationFactor = 
Integer.valueOf(componentContext.getProperties().get(SOLR_REPLICATION_FACTOR).toString());
         solrConfDir = 
String.valueOf(componentContext.getProperties().get(SOLR_CONF_DIR));
-        remoteSolrServerConfiguration = new 
RemoteSolrServerConfiguration(solrZkHost, solrCollection, solrShardsNo, 
solrReplicationFactor, solrConfDir, solrHttpUrl);
+        int socketTimeout = 
Integer.valueOf(componentContext.getProperties().get(SOCKET_TIMEOUT).toString());
+        int connectionTimeout = 
Integer.valueOf(componentContext.getProperties().get(CONNECTION_TIMEOUT).toString());
+        remoteSolrServerConfiguration = new 
RemoteSolrServerConfiguration(solrZkHost, solrCollection, solrShardsNo,
+                solrReplicationFactor, solrConfDir, socketTimeout, 
connectionTimeout, solrHttpUrl);
     }
 
     @Deactivate

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
 Mon Sep 11 12:23:53 2017
@@ -81,7 +81,11 @@ public class RemoteSolrServerProvider im
 
         if (server instanceof HttpSolrServer) {
             String url = ((HttpSolrServer) server).getBaseURL();
-            server = new ConcurrentUpdateSolrServer(url, 1000, 
Runtime.getRuntime().availableProcessors());
+            ConcurrentUpdateSolrServer concurrentUpdateSolrServer = new 
ConcurrentUpdateSolrServer(url, 1000, 
Runtime.getRuntime().availableProcessors());
+            
concurrentUpdateSolrServer.setConnectionTimeout(remoteSolrServerConfiguration.getConnectionTimeout());
+            
concurrentUpdateSolrServer.setSoTimeout(remoteSolrServerConfiguration.getSocketTimeout());
+            concurrentUpdateSolrServer.blockUntilFinished();
+            server = concurrentUpdateSolrServer;
         }
         return server;
     }
@@ -95,6 +99,8 @@ public class RemoteSolrServerProvider im
     private SolrServer initializeWithExistingHttpServer() throws IOException, 
SolrServerException {
         // try basic Solr HTTP client
         HttpSolrServer httpSolrServer = new 
HttpSolrServer(remoteSolrServerConfiguration.getSolrHttpUrls()[0]);
+        
httpSolrServer.setConnectionTimeout(remoteSolrServerConfiguration.getConnectionTimeout());
+        
httpSolrServer.setSoTimeout(remoteSolrServerConfiguration.getSocketTimeout());
         SolrPingResponse ping = httpSolrServer.ping();
         if (ping != null && 0 == ping.getStatus()) {
             return httpSolrServer;
@@ -107,7 +113,9 @@ public class RemoteSolrServerProvider im
     private SolrServer initializeWithCloudSolrServer() throws IOException {
         // try SolrCloud client
         CloudSolrServer cloudSolrServer = new 
CloudSolrServer(remoteSolrServerConfiguration.getSolrZkHost());
-        cloudSolrServer.setZkConnectTimeout(100);
+        
cloudSolrServer.setZkConnectTimeout(remoteSolrServerConfiguration.getConnectionTimeout());
+        
cloudSolrServer.setZkClientTimeout(remoteSolrServerConfiguration.getSocketTimeout());
+
         if (connectToZK(cloudSolrServer)) {
             cloudSolrServer.setDefaultCollection("collection1"); // workaround 
for first request when the needed collection may not exist
 

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
 Mon Sep 11 12:23:53 2017
@@ -29,7 +29,8 @@ public class SolrServerConfigurationTest
 
     @Test
     public void testCreateRemoteServerFromConfig() throws Exception {
-        SolrServerConfiguration<RemoteSolrServerProvider> 
remoteSolrServerProviderSolrServerConfiguration = new 
RemoteSolrServerConfiguration(null, null, 1, 1, null);
+        SolrServerConfiguration<RemoteSolrServerProvider> 
remoteSolrServerProviderSolrServerConfiguration =
+                new RemoteSolrServerConfiguration(null, null, 1, 1, null, 10, 
10, null);
         RemoteSolrServerProvider remoteSolrServerProvider = 
remoteSolrServerProviderSolrServerConfiguration.getProvider();
         assertNotNull(remoteSolrServerProvider);
     }

Modified: 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java?rev=1808022&r1=1808021&r2=1808022&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
 Mon Sep 11 12:23:53 2017
@@ -60,7 +60,8 @@ public class RemoteSolrServerProviderIT
             }
             if (cloudServerAvailable) {
                 String collection = "sample_" + System.nanoTime();
-                RemoteSolrServerProvider remoteSolrServerProvider = new 
RemoteSolrServerProvider(new RemoteSolrServerConfiguration(host, collection, 2, 
2, null));
+                RemoteSolrServerProvider remoteSolrServerProvider = new 
RemoteSolrServerProvider(
+                        new RemoteSolrServerConfiguration(host, collection, 2, 
2, null, 10, 10, null));
                 SolrServer solrServer = 
remoteSolrServerProvider.getSolrServer();
                 assertNotNull(solrServer);
                 solrServer.shutdown();


Reply via email to