You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2017/09/11 12:23:53 UTC

svn commit: r1808022 - in /jackrabbit/oak/trunk/oak-solr-core/src: main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/ main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/ main/java/org/apache/jackrabbit/oak...

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();