Author: tommaso
Date: Tue Feb 23 17:24:13 2016
New Revision: 1731908
URL: http://svn.apache.org/viewvc?rev=1731908&view=rev
Log:
OAK-4044 - eventually remove stale lock files in embedded Solr dataDir
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java?rev=1731908&r1=1731907&r2=1731908&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
Tue Feb 23 17:24:13 2016
@@ -16,13 +16,15 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.server;
+import javax.annotation.CheckForNull;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
-import javax.annotation.CheckForNull;
+import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.commons.IOUtils;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.EmbeddedSolrServerConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationDefaults;
@@ -48,8 +50,6 @@ public class EmbeddedSolrServerProvider
this.solrServerConfiguration = solrServerConfiguration;
}
- private SolrServer solrServer;
-
private SolrServer createSolrServer() throws Exception {
log.info("creating new embedded solr server with config: {}",
solrServerConfiguration);
@@ -174,6 +174,25 @@ public class EmbeddedSolrServerProvider
} else if (!solrCorePathFile.isDirectory()) {
throw new IOException("a non directory file with the specified
name already exists for the given Solr core path'" +
solrCorePathFile.getAbsolutePath());
}
+ // clean data dir
+ File solrDataPathFile = new File(solrHomePathFile + "/" + coreName +
"/data/index");
+ if (solrDataPathFile.exists()) {
+ log.debug("deleting stale lock files");
+ File[] locks = solrDataPathFile.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ return "write.lock".equals(name);
+ }
+ });
+ log.debug("found {} lock files", locks.length);
+ // remove eventaul previous lock files (e.g. due to ungraceful
shutdown)
+ if (locks.length > 0) {
+ for (File f : locks) {
+ FileUtils.forceDelete(f);
+ log.debug("deleted {}", f.getAbsolutePath());
+ }
+ }
+ }
// check if the a core with the given coreName exists
String[] files = solrHomePathFile.list();
@@ -217,12 +236,7 @@ public class EmbeddedSolrServerProvider
@CheckForNull
@Override
public SolrServer getSolrServer() throws Exception {
- synchronized (this) {
- if (solrServer == null) {
- solrServer = createSolrServer();
- }
- }
- return solrServer;
+ return createSolrServer();
}
@CheckForNull
@@ -262,14 +276,6 @@ public class EmbeddedSolrServerProvider
@Override
public void close() throws IOException {
- try {
- synchronized (this) {
- if (solrServer != null) {
- solrServer.shutdown();
- }
- }
- } catch (Exception e) {
- // do nothing
- }
+ // do nothing
}
}