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