Author: tommaso
Date: Wed Jul 29 14:27:02 2015
New Revision: 1693272
URL: http://svn.apache.org/r1693272
Log:
OAK-2292 - caching indexing solr server in remote ssp
Modified:
jackrabbit/oak/branches/1.0/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
Modified:
jackrabbit/oak/branches/1.0/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java?rev=1693272&r1=1693271&r2=1693272&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.0/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
(original)
+++
jackrabbit/oak/branches/1.0/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
Wed Jul 29 14:27:02 2015
@@ -44,6 +44,7 @@ public class RemoteSolrServerProvider im
private final RemoteSolrServerConfiguration remoteSolrServerConfiguration;
private SolrServer solrServer;
+ private SolrServer indexingSolrServer;
public RemoteSolrServerProvider(RemoteSolrServerConfiguration
remoteSolrServerConfiguration) {
this.remoteSolrServerConfiguration = remoteSolrServerConfiguration;
@@ -51,23 +52,26 @@ public class RemoteSolrServerProvider im
@Override
public SolrServer getSolrServer() throws Exception {
- if (solrServer == null &&
remoteSolrServerConfiguration.getSolrZkHost() != null &&
remoteSolrServerConfiguration.getSolrZkHost().length() > 0) {
- try {
- solrServer = initializeWithCloudSolrServer();
- } catch (Exception e) {
- log.warn("unable to initialize SolrCloud client for {}",
remoteSolrServerConfiguration.getSolrZkHost(), e);
+ synchronized (this) {
+ if (solrServer == null &&
remoteSolrServerConfiguration.getSolrZkHost() != null &&
remoteSolrServerConfiguration.getSolrZkHost().length() > 0) {
+ try {
+ solrServer = initializeWithCloudSolrServer();
+ } catch (Exception e) {
+ log.warn("unable to initialize SolrCloud client for {}",
remoteSolrServerConfiguration.getSolrZkHost(), e);
+ }
}
- }
- if (solrServer == null &&
remoteSolrServerConfiguration.getSolrHttpUrls() != null &&
remoteSolrServerConfiguration.getSolrHttpUrls().length == 1
- && remoteSolrServerConfiguration.getSolrHttpUrls()[0] != null
&& remoteSolrServerConfiguration.getSolrHttpUrls()[0].length() > 0) {
- try {
- solrServer = initializeWithExistingHttpServer();
- } catch (Exception e1) {
- log.warn("unable to initialize Solr HTTP client for {}",
remoteSolrServerConfiguration.getSolrHttpUrls(), e1);
+ if (solrServer == null &&
remoteSolrServerConfiguration.getSolrHttpUrls() != null &&
remoteSolrServerConfiguration.getSolrHttpUrls().length == 1
+ && remoteSolrServerConfiguration.getSolrHttpUrls()[0] !=
null && remoteSolrServerConfiguration.getSolrHttpUrls()[0].length() > 0) {
+ try {
+ solrServer = initializeWithExistingHttpServer();
+ } catch (Exception e1) {
+ log.warn("unable to initialize Solr HTTP client for {}",
remoteSolrServerConfiguration.getSolrHttpUrls(), e1);
+ }
}
- }
- if (solrServer == null) {
- throw new IOException("could not connect to any remote Solr
server");
+ if (solrServer == null) {
+ throw new IOException("could not connect to any remote Solr
server");
+ }
+ log.debug("initialized remote search solr server");
}
return solrServer;
}
@@ -75,14 +79,19 @@ public class RemoteSolrServerProvider im
@CheckForNull
@Override
public SolrServer getIndexingSolrServer() throws Exception {
- SolrServer server = getSolrServer();
-
- if (server instanceof HttpSolrServer) {
- String url = ((HttpSolrServer) server).getBaseURL();
- server = new ConcurrentUpdateSolrServer(url, 1000, 4);
+ synchronized (this) {
+ if (indexingSolrServer == null) {
+ SolrServer server = getSolrServer();
+
+ if (server instanceof HttpSolrServer) {
+ String url = ((HttpSolrServer) server).getBaseURL();
+ indexingSolrServer = new ConcurrentUpdateSolrServer(url,
1000, 4);
+ log.debug("initialized remote indexing solr server");
+ }
+ }
}
- return server;
+ return indexingSolrServer;
}
@CheckForNull