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


Reply via email to