Author: markrmiller
Date: Mon Mar 22 20:31:06 2010
New Revision: 926320
URL: http://svn.apache.org/viewvc?rev=926320&view=rev
Log:
move index exists check into DirectoryFactory so that it can more properly work
with RamDir
Modified:
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/DirectoryFactory.java
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/RAMDirectoryFactory.java
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/SolrCore.java
Modified:
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/DirectoryFactory.java
URL:
http://svn.apache.org/viewvc/lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/DirectoryFactory.java?rev=926320&r1=926319&r2=926320&view=diff
==============================================================================
---
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/DirectoryFactory.java
(original)
+++
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/DirectoryFactory.java
Mon Mar 22 20:31:06 2010
@@ -16,6 +16,7 @@ package org.apache.solr.core;
* limitations under the License.
*/
+import java.io.File;
import java.io.IOException;
import org.apache.lucene.store.Directory;
@@ -34,6 +35,12 @@ public abstract class DirectoryFactory i
* @throws IOException
*/
public abstract Directory open(String path) throws IOException;
+
+ public boolean exists(String path) {
+ // back compat behavior
+ File dirFile = new File(path);
+ return dirFile.canRead();
+ }
public void init(NamedList args) {
Modified:
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/RAMDirectoryFactory.java
URL:
http://svn.apache.org/viewvc/lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/RAMDirectoryFactory.java?rev=926320&r1=926319&r2=926320&view=diff
==============================================================================
---
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/RAMDirectoryFactory.java
(original)
+++
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/RAMDirectoryFactory.java
Mon Mar 22 20:31:06 2010
@@ -17,13 +17,12 @@
package org.apache.solr.core;
-import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
-
-import java.io.IOException;
import java.io.File;
-import java.util.Map;
+import java.io.IOException;
import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.lucene.store.Directory;
/**
* Directory provider for using lucene RAMDirectory
@@ -45,6 +44,17 @@ public class RAMDirectoryFactory extends
return directory;
}
}
+
+ public boolean exists(String path) {
+ synchronized (this) {
+ RefCntRamDirectory directory = directories.get(path);
+ if (directory == null || !directory.isOpen()) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ }
/**
* Non-public for unit-test access only. Do not use directly
Modified:
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/SolrCore.java
URL:
http://svn.apache.org/viewvc/lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/SolrCore.java?rev=926320&r1=926319&r2=926320&view=diff
==============================================================================
---
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/SolrCore.java
(original)
+++
lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core/SolrCore.java
Mon Mar 22 20:31:06 2010
@@ -365,15 +365,15 @@ public final class SolrCore implements S
void initIndex() {
try {
- File dirFile = new File(getNewIndexDir());
- boolean indexExists = dirFile.canRead();
+
+ initDirectoryFactory();
+ boolean indexExists = getDirectoryFactory().exists(getNewIndexDir());
boolean firstTime;
synchronized (SolrCore.class) {
- firstTime = dirs.add(dirFile.getCanonicalPath());
+ firstTime = dirs.add(new File(getNewIndexDir()).getCanonicalPath());
}
boolean removeLocks = solrConfig.unlockOnStartup;
- initDirectoryFactory();
initIndexReaderFactory();
if (indexExists && firstTime && removeLocks) {
@@ -391,7 +391,7 @@ public final class SolrCore implements S
// Create the index if it doesn't exist.
if(!indexExists) {
- log.warn(logid+"Solr index directory '" + dirFile + "' doesn't exist."
+ log.warn(logid+"Solr index directory '" + new File(getNewIndexDir()) +
"' doesn't exist."
+ " Creating new index...");
SolrIndexWriter writer = new SolrIndexWriter("SolrCore.initIndex",
getIndexDir(), getDirectoryFactory(), true, schema, solrConfig.mainIndexConfig,
solrDelPolicy);