Author: tommaso Date: Thu Jan 18 13:58:45 2018 New Revision: 1821495 URL: http://svn.apache.org/viewvc?rev=1821495&view=rev Log: OAK-7178 - RemoteSolrServerProvider releases connections on ping failures
Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java?rev=1821495&r1=1821494&r2=1821495&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java (original) +++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndex.java Thu Jan 18 13:58:45 2018 @@ -62,7 +62,6 @@ import org.apache.jackrabbit.oak.spi.que import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.response.FacetField; import org.apache.solr.client.solrj.response.QueryResponse; 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=1821495&r1=1821494&r2=1821495&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 Thu Jan 18 13:58:45 2018 @@ -17,6 +17,8 @@ package org.apache.jackrabbit.oak.plugins.index.solr.server; import javax.annotation.CheckForNull; + +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -112,6 +114,7 @@ public class RemoteSolrServerProvider im if (ping != null && 0 == ping.getStatus()) { return httpSolrServer; } else { + httpSolrServer.close(); throw new IOException("the found HTTP Solr server is not alive"); } @@ -147,6 +150,7 @@ public class RemoteSolrServerProvider im if (ping != null && 0 == ping.getStatus()) { return cloudSolrServer; } else { + cloudSolrServer.close(); throw new IOException("the found SolrCloud server is not alive"); } } catch (Exception e) { @@ -165,13 +169,14 @@ public class RemoteSolrServerProvider im cloudSolrServer.close(); throw new IOException("the found SolrCloud server is not alive"); } else { + cloudSolrServer.close(); throw new IOException("could not connect to Zookeeper hosted at " + remoteSolrServerConfiguration.getSolrZkHost()); } } private boolean connectToZK(CloudSolrClient cloudSolrServer) { - log.debug("connecting {}", cloudSolrServer); + log.debug("connecting to {}", cloudSolrServer.getZkHost()); boolean connected = false; for (int i = 0; i < 3; i++) { try { @@ -196,7 +201,7 @@ public class RemoteSolrServerProvider im SolrZkClient zkClient = zkStateReader.getZkClient(); log.debug("creating {} collection if needed", solrCollection); try { - if (zkClient.isConnected() && !zkClient.exists("/configs/" + solrCollection, false)) { + if (zkClient.isConnected() && !zkClient.exists("/configs/" + solrCollection, true)) { String solrConfDir = remoteSolrServerConfiguration.getSolrConfDir(); Path dir; if (solrConfDir != null && solrConfDir.length() > 0) { @@ -225,7 +230,6 @@ public class RemoteSolrServerProvider im log.info("collection creation response {}", response); - cloudSolrServer.setParallelUpdates(true); cloudSolrServer.request(req); } } catch (Exception e) { @@ -236,7 +240,10 @@ public class RemoteSolrServerProvider im private void copy(String name, Path tempDirectory) throws IOException { InputStream inputStream = getClass().getResourceAsStream("/solr/oak/conf/" + name + ".xml"); - FileOutputStream outputStream = new FileOutputStream(Files.createTempFile(tempDirectory, name, ".xml").toFile()); + File dir = tempDirectory.toFile(); + File newFile = new File(dir, name+".xml"); + assert newFile.createNewFile(); + FileOutputStream outputStream = new FileOutputStream(newFile); IOUtils.copy(inputStream, outputStream); inputStream.close(); outputStream.flush();