just saw:
 http://svn.apache.org/viewvc?rev=727779&view=rev

answers one question... but I still wonder why we are using the deprecated call?


On Dec 18, 2008, at 1:05 PM, Ryan McKinley wrote:

I'm messing with the tests for SOLR-680. For some reason, the test for ChacheHeaderTest and NoCacheHeaderTest fail.

When I dig into it, it looks like it fails because the DirectoryFactory returns null. If I add some code to make sure the directory is not null, then everything works fine.

Obviously it works somehow, because the tests work. But I don't understand it and am not sure why we keep using the deprecated calls:

SolrCore#initIndex()
{
  if(  index exist ) {
    directory = SolrIndexWriter.getDirectory(getIndexDir(),...
  }
  stuff

 THEN:
 initDirectoryFactory();
}

1. Why are we using the deprecated calls?
2. Why isn't the directory factory initialized first?


Here is where things fail:
        at org.apache.solr.core.SolrCore.initIndex(SolrCore.java:363)
        at org.apache.solr.core.SolrCore.<init>(SolrCore.java:527)
at org.apache.solr.core.CoreContainer $Initializer.initialize(CoreContainer.java:120) at org .apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java: 69)


Index: src/java/org/apache/solr/core/SolrCore.java
===================================================================
--- src/java/org/apache/solr/core/SolrCore.java (revision 727778)
+++ src/java/org/apache/solr/core/SolrCore.java (working copy)
@@ -358,9 +358,17 @@
       boolean firstTime = dirs.add(dirFile.getCanonicalPath());
boolean removeLocks = solrConfig.getBool("mainIndex/ unlockOnStartup", false);
       if (indexExists && firstTime && removeLocks) {
+        DirectoryFactory f = getDirectoryFactory();
+        if( f == null ) {
+          Throwable t = new Throwable();
+          t.printStackTrace();
+
+          initDirectoryFactory();
+          f = getDirectoryFactory();
+        }
// to remove locks, the directory must already exist... so we create it
         // if it didn't exist already...
- Directory dir = SolrIndexWriter.getDirectory(getIndexDir(), getDirectoryFactory(), solrConfig.mainIndexConfig); + Directory dir = SolrIndexWriter.getDirectory(getIndexDir(), f, solrConfig.mainIndexConfig);
         if (dir != null)  {
           if (IndexWriter.isLocked(dir)) {
log.warn(logid+"WARNING: Solr index directory '" + getIndexDir() + "' is locked. Unlocking...");


Reply via email to