You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ma...@apache.org on 2010/03/22 21:31:06 UTC

svn commit: r926320 - in /lucene/solr/branches/newtrunk/solr/src/java/org/apache/solr/core: DirectoryFactory.java RAMDirectoryFactory.java SolrCore.java

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