You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2012/01/02 17:26:14 UTC

svn commit: r1226460 [2/2] - in /lucene/dev/branches/solrcloud: ./ dev-tools/idea/lucene/contrib/ lucene/ lucene/contrib/ lucene/contrib/sandbox/src/test/org/apache/lucene/sandbox/queries/regex/ lucene/src/java/org/apache/lucene/codecs/ lucene/src/java...

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java Mon Jan  2 16:26:10 2012
@@ -15,6 +15,7 @@ package org.apache.lucene.index;
  * limitations under the License.
  */
 
+import org.apache.lucene.store.AlreadyClosedException;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
@@ -26,6 +27,7 @@ import org.apache.lucene.index.IndexWrit
 import org.apache.lucene.util.LuceneTestCase;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Random;
 
 
@@ -350,4 +352,101 @@ public class TestIndexWriterMerging exte
     iw.close();
     dir.close();
   }
+  
+  public void testNoWaitClose() throws Throwable {
+    Directory directory = newDirectory();
+
+    final Document doc = new Document();
+    FieldType customType = new FieldType(TextField.TYPE_STORED);
+    customType.setTokenized(false);
+
+    Field idField = newField("id", "", customType);
+    doc.add(idField);
+
+    for(int pass=0;pass<2;pass++) {
+      if (VERBOSE) {
+        System.out.println("TEST: pass=" + pass);
+      }
+
+      IndexWriterConfig conf =  newIndexWriterConfig(
+              TEST_VERSION_CURRENT, new MockAnalyzer(random)).
+              setOpenMode(OpenMode.CREATE).
+              setMaxBufferedDocs(2).
+              setMergePolicy(newLogMergePolicy());
+      if (pass == 2) {
+        conf.setMergeScheduler(new SerialMergeScheduler());
+      }
+
+      IndexWriter writer = new IndexWriter(directory, conf);
+      ((LogMergePolicy) writer.getConfig().getMergePolicy()).setMergeFactor(100);          
+
+      for(int iter=0;iter<10;iter++) {
+        if (VERBOSE) {
+          System.out.println("TEST: iter=" + iter);
+        }
+        for(int j=0;j<199;j++) {
+          idField.setValue(Integer.toString(iter*201+j));
+          writer.addDocument(doc);
+        }
+
+        int delID = iter*199;
+        for(int j=0;j<20;j++) {
+          writer.deleteDocuments(new Term("id", Integer.toString(delID)));
+          delID += 5;
+        }
+
+        // Force a bunch of merge threads to kick off so we
+        // stress out aborting them on close:
+        ((LogMergePolicy) writer.getConfig().getMergePolicy()).setMergeFactor(2);
+
+        final IndexWriter finalWriter = writer;
+        final ArrayList<Throwable> failure = new ArrayList<Throwable>();
+        Thread t1 = new Thread() {
+            @Override
+            public void run() {
+              boolean done = false;
+              while(!done) {
+                for(int i=0;i<100;i++) {
+                  try {
+                    finalWriter.addDocument(doc);
+                  } catch (AlreadyClosedException e) {
+                    done = true;
+                    break;
+                  } catch (NullPointerException e) {
+                    done = true;
+                    break;
+                  } catch (Throwable e) {
+                    e.printStackTrace(System.out);
+                    failure.add(e);
+                    done = true;
+                    break;
+                  }
+                }
+                Thread.yield();
+              }
+
+            }
+          };
+
+        if (failure.size() > 0) {
+          throw failure.get(0);
+        }
+
+        t1.start();
+
+        writer.close(false);
+        t1.join();
+
+        // Make sure reader can read
+        IndexReader reader = IndexReader.open(directory);
+        reader.close();
+
+        // Reopen
+        writer = new IndexWriter(directory, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random)).setOpenMode(OpenMode.APPEND).setMergePolicy(newLogMergePolicy()));
+      }
+      writer.close();
+    }
+
+    directory.close();
+  }
 }

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestStressNRT.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestStressNRT.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestStressNRT.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/index/TestStressNRT.java Mon Jan  2 16:26:10 2012
@@ -77,7 +77,7 @@ public class TestStressNRT extends Lucen
     final boolean tombstones = random.nextBoolean();
 
     // query variables
-    final AtomicLong operations = new AtomicLong(atLeast(50000));  // number of query operations to perform in total
+    final AtomicLong operations = new AtomicLong(atLeast(10000));  // number of query operations to perform in total
 
     final int nReadThreads = _TestUtil.nextInt(random, 1, TEST_NIGHTLY ? 10 : 5);
     initModel(ndocs);

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestFieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestFieldCache.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestFieldCache.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestFieldCache.java Mon Jan  2 16:26:10 2012
@@ -37,19 +37,20 @@ import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util._TestUtil;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 
 public class TestFieldCache extends LuceneTestCase {
-  protected IndexReader reader;
-  private int NUM_DOCS;
-  private int NUM_ORDS;
-  private String[] unicodeStrings;
-  private BytesRef[][] multiValued;
-  private Directory directory;
-
-  @Override
-  public void setUp() throws Exception {
-    super.setUp();
-    NUM_DOCS = atLeast(1000);
+  private static IndexReader reader;
+  private static int NUM_DOCS;
+  private static int NUM_ORDS;
+  private static String[] unicodeStrings;
+  private static BytesRef[][] multiValued;
+  private static Directory directory;
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    NUM_DOCS = atLeast(500);
     NUM_ORDS = atLeast(2);
     directory = newDirectory();
     RandomIndexWriter writer= new RandomIndexWriter(random, directory, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
@@ -101,11 +102,14 @@ public class TestFieldCache extends Luce
     writer.close();
   }
 
-  @Override
-  public void tearDown() throws Exception {
+  @AfterClass
+  public static void afterClass() throws Exception {
     reader.close();
+    reader = null;
     directory.close();
-    super.tearDown();
+    directory = null;
+    unicodeStrings = null;
+    multiValued = null;
   }
   
   public void testInfoStream() throws Exception {
@@ -296,7 +300,7 @@ public class TestFieldCache extends Luce
     dir.close();
   }
 
-  private String generateString(int i) {
+  private static String generateString(int i) {
     String s = null;
     if (i > 0 && random.nextInt(3) == 1) {
       // reuse past string -- try to find one that's not null

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestShardSearching.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestShardSearching.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestShardSearching.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestShardSearching.java Mon Jan  2 16:26:10 2012
@@ -66,11 +66,11 @@ public class TestShardSearching extends 
   public void testSimple() throws Exception {
     final int numNodes = _TestUtil.nextInt(random, 1, 10);
 
-    final double runTimeSec = atLeast(5) * RANDOM_MULTIPLIER;
+    final double runTimeSec = atLeast(3);
 
     final int minDocsToMakeTerms = _TestUtil.nextInt(random, 5, 20);
 
-    final int maxSearcherAgeSeconds = _TestUtil.nextInt(random, 1, 4);
+    final int maxSearcherAgeSeconds = _TestUtil.nextInt(random, 1, 3);
 
     if (VERBOSE) {
       System.out.println("TEST: numNodes=" + numNodes + " runTimeSec=" + runTimeSec + " maxSearcherAgeSeconds=" + maxSearcherAgeSeconds);

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestSort.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestSort.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestSort.java Mon Jan  2 16:26:10 2012
@@ -80,7 +80,7 @@ public class TestSort extends LuceneTest
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    NUM_STRINGS = atLeast(6000);
+    NUM_STRINGS = atLeast(500);
   }
 
   // document data:
@@ -204,8 +204,7 @@ public class TestSort extends LuceneTest
     dirs.add(indexStore);
     IndexWriter writer = new IndexWriter(
         indexStore,
-        new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).
-            setMaxBufferedDocs(4).
+        newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).
             setMergePolicy(newLogMergePolicy(97))
     );
     FieldType onlyStored = new FieldType();

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestTermVectors.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestTermVectors.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestTermVectors.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/TestTermVectors.java Mon Jan  2 16:26:10 2012
@@ -36,15 +36,16 @@ import org.apache.lucene.util.English;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util._TestUtil;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 
 public class TestTermVectors extends LuceneTestCase {
-  private IndexSearcher searcher;
-  private IndexReader reader;
-  private Directory directory;
-
-  @Override
-  public void setUp() throws Exception {                  
-    super.setUp();
+  private static IndexSearcher searcher;
+  private static IndexReader reader;
+  private static Directory directory;
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {                  
     directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random, directory, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random, MockTokenizer.SIMPLE, true)).setMergePolicy(newLogMergePolicy()));
     //writer.setUseCompoundFile(true);
@@ -77,11 +78,13 @@ public class TestTermVectors extends Luc
     searcher = newSearcher(reader);
   }
   
-  @Override
-  public void tearDown() throws Exception {
+  @AfterClass
+  public static void afterClass() throws Exception {
     reader.close();
     directory.close();
-    super.tearDown();
+    reader = null;
+    directory = null;
+    searcher = null;
   }
 
   public void test() {
@@ -370,7 +373,7 @@ public class TestTermVectors extends Luc
     }
     IndexReader reader = writer.getReader();
     writer.close();
-    searcher = newSearcher(reader);
+    IndexSearcher searcher = newSearcher(reader);
 
     Query query = new TermQuery(new Term("field", "hundred"));
     ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;
@@ -418,7 +421,7 @@ public class TestTermVectors extends Luc
     IndexReader reader = writer.getReader();
     writer.close();
 
-    searcher = newSearcher(reader);
+    IndexSearcher searcher = newSearcher(reader);
 
     Query query = new TermQuery(new Term("field", "one"));
     ScoreDoc[] hits = searcher.search(query, null, 1000).scoreDocs;

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java Mon Jan  2 16:26:10 2012
@@ -111,7 +111,7 @@ public class TestBasics extends LuceneTe
     directory = newDirectory();
     RandomIndexWriter writer = new RandomIndexWriter(random, directory,
         newIndexWriterConfig(TEST_VERSION_CURRENT, simplePayloadAnalyzer)
-                                                     .setMaxBufferedDocs(_TestUtil.nextInt(random, 50, 1000)).setMergePolicy(newLogMergePolicy()));
+                                                     .setMaxBufferedDocs(_TestUtil.nextInt(random, 100, 1000)).setMergePolicy(newLogMergePolicy()));
     //writer.infoStream = System.out;
     for (int i = 0; i < 2000; i++) {
       Document doc = new Document();

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/store/TestLockFactory.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/store/TestLockFactory.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/store/TestLockFactory.java Mon Jan  2 16:26:10 2012
@@ -132,6 +132,7 @@ public class TestLockFactory extends Luc
     // Verify: do stress test, by opening IndexReaders and
     // IndexWriters over & over in 2 threads and making sure
     // no unexpected exceptions are raised:
+    @Nightly
     public void testStressLocks() throws Exception {
       _testStressLocks(null, _TestUtil.getTempDir("index.TestLockFactory6"));
     }
@@ -140,6 +141,7 @@ public class TestLockFactory extends Luc
     // IndexWriters over & over in 2 threads and making sure
     // no unexpected exceptions are raised, but use
     // NativeFSLockFactory:
+    @Nightly
     public void testStressLocksNativeFSLockFactory() throws Exception {
       File dir = _TestUtil.getTempDir("index.TestLockFactory7");
       _testStressLocks(new NativeFSLockFactory(dir), dir);

Modified: lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java (original)
+++ lucene/dev/branches/solrcloud/lucene/src/test/org/apache/lucene/util/fst/TestFSTs.java Mon Jan  2 16:26:10 2012
@@ -1436,7 +1436,7 @@ public class TestFSTs extends LuceneTest
       Field idField = newField("id", "", StringField.TYPE_UNSTORED);
       doc.add(idField);
       
-      final int NUM_IDS = (int) (1000*RANDOM_MULTIPLIER*(1.0+random.nextDouble()));
+      final int NUM_IDS = atLeast(200);
       //final int NUM_IDS = (int) (377 * (1.0+random.nextDouble()));
       if (VERBOSE) {
         System.out.println("TEST: NUM_IDS=" + NUM_IDS);

Modified: lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKAnalyzer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKAnalyzer.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKAnalyzer.java (original)
+++ lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKAnalyzer.java Mon Jan  2 16:26:10 2012
@@ -22,16 +22,19 @@ import java.io.Reader;
 import java.util.Set;
 
 import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.Tokenizer;
+import org.apache.lucene.analysis.core.LowerCaseFilter;
 import org.apache.lucene.analysis.core.StopFilter;
+import org.apache.lucene.analysis.standard.StandardTokenizer;
 import org.apache.lucene.analysis.util.StopwordAnalyzerBase;
 import org.apache.lucene.util.Version;
 
-
 /**
- * An {@link Analyzer} that tokenizes text with {@link CJKTokenizer} and
- * filters with {@link StopFilter}
- *
+ * An {@link Analyzer} that tokenizes text with {@link StandardTokenizer},
+ * normalizes content with {@link CJKWidthFilter}, folds case with
+ * {@link LowerCaseFilter}, forms bigrams of CJK with {@link CJKBigramFilter},
+ * and filters stopwords with {@link StopFilter}
  */
 public final class CJKAnalyzer extends StopwordAnalyzerBase {
   /**
@@ -86,7 +89,16 @@ public final class CJKAnalyzer extends S
   @Override
   protected TokenStreamComponents createComponents(String fieldName,
       Reader reader) {
-    final Tokenizer source = new CJKTokenizer(reader);
-    return new TokenStreamComponents(source, new StopFilter(matchVersion, source, stopwords));
+    if (matchVersion.onOrAfter(Version.LUCENE_36)) {
+      final Tokenizer source = new StandardTokenizer(matchVersion, reader);
+      // run the widthfilter first before bigramming, it sometimes combines characters.
+      TokenStream result = new CJKWidthFilter(source);
+      result = new LowerCaseFilter(matchVersion, result);
+      result = new CJKBigramFilter(result);
+      return new TokenStreamComponents(source, new StopFilter(matchVersion, result, stopwords));
+    } else {
+      final Tokenizer source = new CJKTokenizer(reader);
+      return new TokenStreamComponents(source, new StopFilter(matchVersion, source, stopwords));
+    }
   }
 }

Modified: lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKTokenizer.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKTokenizer.java (original)
+++ lucene/dev/branches/solrcloud/modules/analysis/common/src/java/org/apache/lucene/analysis/cjk/CJKTokenizer.java Mon Jan  2 16:26:10 2012
@@ -44,7 +44,9 @@ import org.apache.lucene.util.AttributeS
  * please search  <a
  * href="http://www.google.com/search?q=word+chinese+segment">google</a>
  *
+ * @deprecated Use StandardTokenizer, CJKWidthFilter, CJKBigramFilter, and LowerCaseFilter instead.
  */
+@Deprecated
 public final class CJKTokenizer extends Tokenizer {
     //~ Static fields/initializers ---------------------------------------------
     /** Word token type */

Modified: lucene/dev/branches/solrcloud/modules/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKTokenizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKTokenizer.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKTokenizer.java (original)
+++ lucene/dev/branches/solrcloud/modules/analysis/common/src/test/org/apache/lucene/analysis/cjk/TestCJKTokenizer.java Mon Jan  2 16:26:10 2012
@@ -21,7 +21,10 @@ import java.io.IOException;
 
 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
 import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.util.Version;
 
+/** @deprecated Remove when CJKTokenizer is removed (5.0) */
+@Deprecated
 public class TestCJKTokenizer extends BaseTokenStreamTestCase {
   
   class TestToken {
@@ -41,7 +44,7 @@ public class TestCJKTokenizer extends Ba
   }
 
   public void checkCJKToken(final String str, final TestToken[] out_tokens) throws IOException {
-    Analyzer analyzer = new CJKAnalyzer(TEST_VERSION_CURRENT);
+    Analyzer analyzer = new CJKAnalyzer(Version.LUCENE_30);
     String terms[] = new String[out_tokens.length];
     int startOffsets[] = new int[out_tokens.length];
     int endOffsets[] = new int[out_tokens.length];
@@ -56,7 +59,7 @@ public class TestCJKTokenizer extends Ba
   }
   
   public void checkCJKTokenReusable(final Analyzer a, final String str, final TestToken[] out_tokens) throws IOException {
-    Analyzer analyzer = new CJKAnalyzer(TEST_VERSION_CURRENT);
+    Analyzer analyzer = new CJKAnalyzer(Version.LUCENE_30);
     String terms[] = new String[out_tokens.length];
     int startOffsets[] = new int[out_tokens.length];
     int endOffsets[] = new int[out_tokens.length];
@@ -212,13 +215,13 @@ public class TestCJKTokenizer extends Ba
   }
   
   public void testTokenStream() throws Exception {
-    Analyzer analyzer = new CJKAnalyzer(TEST_VERSION_CURRENT);
+    Analyzer analyzer = new CJKAnalyzer(Version.LUCENE_30);
     assertAnalyzesTo(analyzer, "\u4e00\u4e01\u4e02", 
         new String[] { "\u4e00\u4e01", "\u4e01\u4e02"});
   }
   
   public void testReusableTokenStream() throws Exception {
-    Analyzer analyzer = new CJKAnalyzer(TEST_VERSION_CURRENT);
+    Analyzer analyzer = new CJKAnalyzer(Version.LUCENE_30);
     String str = "\u3042\u3044\u3046\u3048\u304aabc\u304b\u304d\u304f\u3051\u3053";
     
     TestToken[] out_tokens = { 
@@ -273,6 +276,6 @@ public class TestCJKTokenizer extends Ba
   
   /** blast some random strings through the analyzer */
   public void testRandomStrings() throws Exception {
-    checkRandomData(random, new CJKAnalyzer(TEST_VERSION_CURRENT), 10000*RANDOM_MULTIPLIER);
+    checkRandomData(random, new CJKAnalyzer(Version.LUCENE_30), 10000*RANDOM_MULTIPLIER);
   }
 }

Modified: lucene/dev/branches/solrcloud/modules/facet/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/facet/build.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/facet/build.xml (original)
+++ lucene/dev/branches/solrcloud/modules/facet/build.xml Mon Jan  2 16:26:10 2012
@@ -73,23 +73,5 @@
   <target name="compile-core" depends="jar-analyzers-common,common.compile-core,compile-examples" description="Compiles facet classes" />
 
   <target name="jar-core" depends="common.jar-core,jar-examples" />
-
-  <target name="javadocs" depends="compile-core">
-	<sequential>
-      <mkdir dir="${javadoc.dir}/contrib-${name}"/>
-      <copy todir="${javadoc.dir}/contrib-${name}" file="docs/userguide.html" />
-      <!-- javadoc core classes -->
-      <invoke-javadoc
-        destdir="${javadoc.dir}/contrib-${name}"
-        title="${Name} ${version} contrib-${name} API">
-        <sources>
-          <link href=""/>
-          <packageset dir="${src.dir}"/>
-          <packageset dir="${examples.dir}"/>
-        </sources>
-      </invoke-javadoc>
-      <jarify basedir="${javadoc.dir}/contrib-${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
-    </sequential>
-  </target>
     
 </project>

Modified: lucene/dev/branches/solrcloud/modules/facet/src/java/org/apache/lucene/facet/package.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/facet/src/java/org/apache/lucene/facet/package.html?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/facet/src/java/org/apache/lucene/facet/package.html (original)
+++ lucene/dev/branches/solrcloud/modules/facet/src/java/org/apache/lucene/facet/package.html Mon Jan  2 16:26:10 2012
@@ -3,6 +3,7 @@
     <title>Faceted Indexing and Search</title>
   </head>
   <body>
-    Provides faceted indexing and search capabilities. The <a href="../../../../userguide.html">userguide</a> is recommended for a start.  
+    <!-- NOTE: if you update the userguide link, also update the one in src/java/overview.html -->
+    Provides faceted indexing and search capabilities. The <a href="doc-files/userguide.html">userguide</a> is recommended for a start.  
   </body>
-</html>
\ No newline at end of file
+</html>

Modified: lucene/dev/branches/solrcloud/modules/facet/src/java/overview.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/facet/src/java/overview.html?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/facet/src/java/overview.html (original)
+++ lucene/dev/branches/solrcloud/modules/facet/src/java/overview.html Mon Jan  2 16:26:10 2012
@@ -21,6 +21,7 @@
     </title>
   </head>
   <body>
-  Provides faceted indexing and search capabilities (checkout the <a href="userguide.html">userguide</a>).
+  <!-- NOTE: if you update the userguide link, also update the one in o.a.l.facet/package.html -->
+  Provides faceted indexing and search capabilities (checkout the <a href="org/apache/lucene/facet/doc-files/userguide.html">userguide</a>).
   </body>
-</html>
\ No newline at end of file
+</html>

Modified: lucene/dev/branches/solrcloud/modules/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java (original)
+++ lucene/dev/branches/solrcloud/modules/facet/src/test/org/apache/lucene/facet/search/TestTopKResultsHandlerRandom.java Mon Jan  2 16:26:10 2012
@@ -132,4 +132,9 @@ public class TestTopKResultsHandlerRando
     }
   }
 
+  @Override
+  protected int numDocsToIndex() {
+    return TEST_NIGHTLY ? 20000 : 1000;
+  }
+
 }

Modified: lucene/dev/branches/solrcloud/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java (original)
+++ lucene/dev/branches/solrcloud/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java Mon Jan  2 16:26:10 2012
@@ -303,11 +303,11 @@ public class TestCustomScoreQuery extend
     assertEquals("queries should have same #hits",h1.size(),h4CustomAdd.size());
     assertEquals("queries should have same #hits",h1.size(),h5CustomMulAdd.size());
 
-    QueryUtils.check(random, q1,s);
-    QueryUtils.check(random, q2,s);
-    QueryUtils.check(random, q3,s);
-    QueryUtils.check(random, q4,s);
-    QueryUtils.check(random, q5,s);
+    QueryUtils.check(random, q1, s, rarely());
+    QueryUtils.check(random, q2, s, rarely());
+    QueryUtils.check(random, q3, s, rarely());
+    QueryUtils.check(random, q4, s, rarely());
+    QueryUtils.check(random, q5, s, rarely());
 
     // verify scores ratios
     for (final Integer doc : h1.keySet()) {

Modified: lucene/dev/branches/solrcloud/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/CHANGES.txt?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/CHANGES.txt (original)
+++ lucene/dev/branches/solrcloud/solr/CHANGES.txt Mon Jan  2 16:26:10 2012
@@ -197,6 +197,9 @@ New Features
 
 * SOLR-2481: Add support for commitWithin in DataImportHandler (Sami Siren via yonik)
 
+* SOLR-2992: Add support for IndexWriter.prepareCommit() via prepareCommit=true
+  on update URLs. (yonik)
+
 
 Optimizations
 ----------------------

Modified: lucene/dev/branches/solrcloud/solr/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/common-build.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/common-build.xml (original)
+++ lucene/dev/branches/solrcloud/solr/common-build.xml Mon Jan  2 16:26:10 2012
@@ -47,7 +47,6 @@
   <property name="example" value="${common-solr.dir}/example" />
   <property name="javadoc.dir" location="${build.dir}/docs/api"/>
   <property name="tests.loggingfile" value="${common-solr.dir}/testlogging.properties"/>
-  <property name="tests.threadspercpu" value="2"/>
   <property name="tests.cleanthreads.sysprop" value="perClass"/>
 
   <property name="clover.db.dir" location="${dest}/tests/clover/db"/>

Modified: lucene/dev/branches/solrcloud/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/conf/solrconfig-icucollate.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/conf/solrconfig-icucollate.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/conf/solrconfig-icucollate.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/analysis-extras/src/test-files/analysis-extras/solr/conf/solrconfig-icucollate.xml Mon Jan  2 16:26:10 2012
@@ -20,4 +20,5 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 </config>

Modified: lucene/dev/branches/solrcloud/solr/contrib/clustering/src/test-files/clustering/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/clustering/src/test-files/clustering/solr/conf/solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/clustering/src/test-files/clustering/solr/conf/solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/clustering/src/test-files/clustering/solr/conf/solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,7 +24,7 @@
        If replication is in use, this should match the replication configuration. -->
   <dataDir>${solr.data.dir:}</dataDir>
 
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default unless overridden. -->
     <useCompoundFile>false</useCompoundFile>

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/conf/dataimport-solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/conf/dataimport-solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/conf/dataimport-solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler-extras/src/test-files/dihextras/solr/conf/dataimport-solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
        If replication is in use, this should match the replication configuration. -->
        <dataDir>${solr.data.dir:}</dataDir>
 
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default unless overridden. -->

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/contentstream-solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/contentstream-solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/contentstream-solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/contentstream-solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
        If replication is in use, this should match the replication configuration. -->
        <dataDir>${solr.data.dir:}</dataDir>
 
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default unless overridden. -->

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-nodatasource-solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-nodatasource-solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-nodatasource-solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-nodatasource-solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
        If replication is in use, this should match the replication configuration. -->
        <dataDir>${solr.data.dir:}</dataDir>
 
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default unless overridden. -->

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test-files/dih/solr/conf/dataimport-solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
        If replication is in use, this should match the replication configuration. -->
        <dataDir>${solr.data.dir:}</dataDir>
 
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default unless overridden. -->

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilderThreaded.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilderThreaded.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilderThreaded.java (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilderThreaded.java Mon Jan  2 16:26:10 2012
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -31,10 +32,23 @@ import org.junit.Test;
  */
 public class TestDocBuilderThreaded extends AbstractDataImportHandlerTestCase {
 
+  //TODO: fix this test to not require FSDirectory.
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "solr.MockFSDirectoryFactory");
     initCore("dataimport-solrconfig.xml", "dataimport-schema.xml");
   }
+  
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
 
   @Before
   @Override

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestErrorHandling.java Mon Jan  2 16:26:10 2012
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 
@@ -34,12 +35,25 @@ import org.junit.BeforeClass;
  */
 public class TestErrorHandling extends AbstractDataImportHandlerTestCase {
 
+  //TODO: fix this test to not require FSDirectory.
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "solr.MockFSDirectoryFactory");
     initCore("dataimport-solrconfig.xml", "dataimport-schema.xml");
     ignoreException("Unexpected close tag");
   }
   
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
+  
   @Before @Override
   public void setUp() throws Exception {
     super.setUp();

Modified: lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSqlEntityProcessorDelta.java Mon Jan  2 16:26:10 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.solr.handler.dataimport;
 
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -59,10 +60,23 @@ public class TestSqlEntityProcessorDelta
     "  </document>\n" +
     "</dataConfig>\n";
 
+  //TODO: fix this test to not require FSDirectory.
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "solr.MockFSDirectoryFactory");
     initCore("dataimport-solrconfig.xml", "dataimport-schema.xml");
   }
+  
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
 
   @Before @Override
   public void setUp() throws Exception {

Modified: lucene/dev/branches/solrcloud/solr/contrib/extraction/src/test-files/extraction/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/extraction/src/test-files/extraction/solr/conf/solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/extraction/src/test-files/extraction/solr/conf/solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/extraction/src/test-files/extraction/solr/conf/solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -30,6 +30,7 @@
        It defaults to "index" if not present, and should probably
        not be changed if replication is in use. -->
   <dataDir>${solr.data.dir:}</dataDir>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <indexDefaults>
    <!-- Values here affect all index writers and act as a default

Modified: lucene/dev/branches/solrcloud/solr/contrib/uima/src/test-files/uima/solr/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/contrib/uima/src/test-files/uima/solr/conf/solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/contrib/uima/src/test-files/uima/solr/conf/solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/contrib/uima/src/test-files/uima/solr/conf/solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -59,6 +59,7 @@
     path="../a-jar-that-does-not-exist.jar" />
   -->
 
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <!--
     Used to specify an alternate directory to hold all index data other

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/analysis/CJKTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/analysis/CJKTokenizerFactory.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/analysis/CJKTokenizerFactory.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/analysis/CJKTokenizerFactory.java Mon Jan  2 16:26:10 2012
@@ -30,8 +30,9 @@ import java.io.Reader;
  *     &lt;tokenizer class="solr.CJKTokenizerFactory"/&gt;
  *   &lt;/analyzer&gt;
  * &lt;/fieldType&gt;</pre>
- *
+ * @deprecated
  */
+@Deprecated
 public class CJKTokenizerFactory extends BaseTokenizerFactory {
   public CJKTokenizer create(Reader in) {
     return new CJKTokenizer(in);

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrat.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrat.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/RecoveryStrat.java Mon Jan  2 16:26:10 2012
@@ -143,8 +143,6 @@ public class RecoveryStrat {
               } finally {
                 searcher.decref();
               }
-
-              if (recoveryListener != null) recoveryListener.finishedRecovery();
               
               zkController
                   .publishAsActive(baseUrl, cloudDesc, shardZkNodeName, core.getName());
@@ -156,6 +154,7 @@ public class RecoveryStrat {
               // state?
               succesfulRecovery = true;
               recoverySuccesses.incrementAndGet();
+              if (recoveryListener != null) recoveryListener.finishedRecovery();
             } catch (InterruptedException e) {
               Thread.currentThread().interrupt();
               log.error("Recovery was interrupted", e);

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java Mon Jan  2 16:26:10 2012
@@ -93,7 +93,7 @@ public final class ZkController {
 
   private RecoveryStrat recoveryStrat = new RecoveryStrat();
   
-  private static boolean SKIP_AUTO_RECOVERY = Boolean.getBoolean("solrcloud.skip.autorecovery");
+  private boolean SKIP_AUTO_RECOVERY = Boolean.getBoolean("solrcloud.skip.autorecovery");
 
   public static void main(String[] args) throws Exception {
     // start up a tmp zk server first

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/handler/RequestHandlerUtils.java Mon Jan  2 16:26:10 2012
@@ -97,16 +97,21 @@ public class RequestHandlerUtils
     
     boolean optimize = params.getBool( UpdateParams.OPTIMIZE, false );
     boolean commit   = params.getBool( UpdateParams.COMMIT,   false );
-    
-    if( optimize || commit || force ) {
+    boolean prepareCommit = params.getBool( UpdateParams.PREPARE_COMMIT,   false );
+
+
+    if( optimize || commit || prepareCommit || force ) {
       CommitUpdateCommand cmd = new CommitUpdateCommand(req, optimize );
       cmd.waitSearcher = params.getBool( UpdateParams.WAIT_SEARCHER, cmd.waitSearcher );
       cmd.softCommit = params.getBool( UpdateParams.SOFT_COMMIT, cmd.softCommit );
       cmd.expungeDeletes = params.getBool( UpdateParams.EXPUNGE_DELETES, cmd.expungeDeletes);      
       cmd.maxOptimizeSegments = params.getInt(UpdateParams.MAX_OPTIMIZE_SEGMENTS, cmd.maxOptimizeSegments);
+      cmd.prepareCommit = prepareCommit;
       processor.processCommit( cmd );
       return true;
     }
+    
+    
     return false;
   }
 

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java Mon Jan  2 16:26:10 2012
@@ -27,6 +27,7 @@ public class CommitUpdateCommand extends
   public boolean waitSearcher=true;
   public boolean expungeDeletes = false;
   public boolean softCommit = false;
+  public boolean prepareCommit = false;
 
   /**
    * During optimize, optimize down to <= this many segments.  Must be >= 1

Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Mon Jan  2 16:26:10 2012
@@ -291,8 +291,32 @@ public class DirectUpdateHandler2 extend
     return rc;
   }
 
+  public void prepareCommit(CommitUpdateCommand cmd) throws IOException {
+
+    boolean error=true;
+
+    try {
+      log.info("start "+cmd);
+      IndexWriter writer = solrCoreState.getIndexWriter(core);
+
+      writer.prepareCommit();
+
+      log.info("end_prepareCommit");
+
+      error=false;
+    }
+    finally {
+      if (error) numErrors.incrementAndGet();
+    }
+  }
+
   @Override
   public void commit(CommitUpdateCommand cmd) throws IOException {
+    if (cmd.prepareCommit) {
+      prepareCommit(cmd);
+      return;
+    }
+
     IndexWriter writer = solrCoreState.getIndexWriter(core);
     if (cmd.optimize) {
       optimizeCommands.incrementAndGet();
@@ -379,7 +403,7 @@ public class DirectUpdateHandler2 extend
       addCommands.set(0);
       deleteByIdCommands.set(0);
       deleteByQueryCommands.set(0);
-      numErrors.set(error ? 1 : 0);
+      if (error) numErrors.incrementAndGet();
     }
 
     // if we are supposed to wait for the searcher to be registered, then we should do it
@@ -450,7 +474,7 @@ public class DirectUpdateHandler2 extend
           deleteByIdCommandsCumulative.get() - deleteByIdCommands.getAndSet( 0 ) );
       deleteByQueryCommandsCumulative.set(
           deleteByQueryCommandsCumulative.get() - deleteByQueryCommands.getAndSet( 0 ) );
-      numErrors.set(error ? 1 : 0);
+      if (error) numErrors.incrementAndGet();
     }
   }
 

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/bad_solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/bad_solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/bad_solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/bad_solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>${unset.sys.property}</useCompoundFile>
   </indexDefaults>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-SOLR-749.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-SOLR-749.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-SOLR-749.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-SOLR-749.xml Mon Jan  2 16:26:10 2012
@@ -24,6 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <queryParser name="foo" class="FooQParserPlugin"/>
   <!-- override the default "lucene" qparser -->
   <queryParser name="lucene" class="org.apache.solr.search.FooQParserPlugin"/>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-basic.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-basic.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-basic.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-basic.xml Mon Jan  2 16:26:10 2012
@@ -22,5 +22,6 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
 </config>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-delpolicy2.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-delpolicy2.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-delpolicy2.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-delpolicy2.xml Mon Jan  2 16:26:10 2012
@@ -19,6 +19,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <mainIndex>
     <deletionPolicy class="org.apache.solr.core.FakeDeletionPolicy">
       <str name="var1">value1</str>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-lazywriter.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-lazywriter.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-lazywriter.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-lazywriter.xml Mon Jan  2 16:26:10 2012
@@ -22,6 +22,6 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"/>
 </config>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master.xml Mon Jan  2 16:26:10 2012
@@ -24,7 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>  
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <dataDir>${solr.data.dir:}</dataDir>
 
   <indexDefaults>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master1.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master1.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master1.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master1.xml Mon Jan  2 16:26:10 2012
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>false</useCompoundFile>
     <mergeFactor>10</mergeFactor>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master2.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master2.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master2.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master2.xml Mon Jan  2 16:26:10 2012
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>false</useCompoundFile>
     <mergeFactor>10</mergeFactor>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master3.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master3.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master3.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-master3.xml Mon Jan  2 16:26:10 2012
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>false</useCompoundFile>
     <mergeFactor>10</mergeFactor>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-mergepolicy.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-mergepolicy.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-mergepolicy.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-mergepolicy.xml Mon Jan  2 16:26:10 2012
@@ -24,7 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <ramBufferSizeMB>32</ramBufferSizeMB>
     <termIndexInterval>256</termIndexInterval>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-repeater.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-repeater.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-repeater.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-repeater.xml Mon Jan  2 16:26:10 2012
@@ -24,7 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <dataDir>${solr.data.dir:}</dataDir>
 
   <indexDefaults>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave.xml Mon Jan  2 16:26:10 2012
@@ -24,7 +24,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <dataDir>${solr.data.dir:}</dataDir>
 
   <indexDefaults>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave1.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave1.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave1.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-slave1.xml Mon Jan  2 16:26:10 2012
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>false</useCompoundFile>
     <mergeFactor>10</mergeFactor>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-xinclude.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-xinclude.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-xinclude.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig-xinclude.xml Mon Jan  2 16:26:10 2012
@@ -19,7 +19,7 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <xi:include href="foobar-missing.xml" xmlns:xi="http://www.w3.org/2001/XInclude">
     <xi:fallback>
       <xi:include href="solrconfig-reqHandler.incl" xmlns:xi="http://www.w3.org/2001/XInclude"/>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig_codec.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig_codec.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig_codec.xml (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test-files/solr/conf/solrconfig_codec.xml Mon Jan  2 16:26:10 2012
@@ -18,6 +18,6 @@
 
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
-  
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <requestHandler name="standard" class="solr.StandardRequestHandler"></requestHandler> 
 </config>

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/TestGroupingSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/TestGroupingSearch.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/TestGroupingSearch.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/TestGroupingSearch.java Mon Jan  2 16:26:10 2012
@@ -537,8 +537,8 @@ public class TestGroupingSearch extends 
      assertJQ(req("q","id:"+doc.id), "/response/numFound==1");
     **/
 
-    int indexIter=50 * RANDOM_MULTIPLIER;  // make >0 to enable test
-    int queryIter=100 * RANDOM_MULTIPLIER;
+    int indexIter=atLeast(10);  // make >0 to enable test
+    int queryIter=atLeast(50);
 
     while (--indexIter >= 0) {
 

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/analysis/TestCJKTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/analysis/TestCJKTokenizerFactory.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/analysis/TestCJKTokenizerFactory.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/analysis/TestCJKTokenizerFactory.java Mon Jan  2 16:26:10 2012
@@ -24,7 +24,9 @@ import org.apache.lucene.analysis.TokenS
 
 /**
  * Simple tests to ensure the CJK tokenizer factory is working.
+ * @deprecated
  */
+@Deprecated
 public class TestCJKTokenizerFactory extends BaseTokenTestCase {
   /**
    * Ensure the tokenizer actually tokenizes CJK text correctly

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java Mon Jan  2 16:26:10 2012
@@ -117,11 +117,12 @@ public abstract class AbstractZkTestCase
   
   @AfterClass
   public static void azt_afterClass() throws Exception {
-    zkServer.shutdown();
     System.clearProperty("zkHost");
     System.clearProperty("solr.test.sys.prop1");
     System.clearProperty("solr.test.sys.prop2");
     System.clearProperty("solrcloud.skip.autorecovery");
+    zkServer.shutdown();
+
     // wait just a bit for any zk client threads to outlast timeout
     Thread.sleep(2000);
   }

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java Mon Jan  2 16:26:10 2012
@@ -36,6 +36,8 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.util.TestHarness;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.xml.sax.SAXException;
 
@@ -44,6 +46,22 @@ import org.xml.sax.SAXException;
  */
 public class TestArbitraryIndexDir extends AbstractSolrTestCase{
 
+  // TODO: fix this test to not require FSDirectory
+  static String savedFactory;
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
+  }
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
+
   @Override
   public void setUp() throws Exception {
     super.setUp();

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Mon Jan  2 16:26:10 2012
@@ -35,6 +35,7 @@ import org.apache.lucene.search.MatchAll
 import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.SimpleFSDirectory;
+import org.apache.lucene.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.TestDistributedSearch;
 import org.apache.solr.client.solrj.SolrServer;
@@ -59,6 +60,8 @@ import org.junit.BeforeClass;
  *
  * @since 1.4
  */
+@LuceneTestCase.Nightly
+// TODO: can this test be sped up? it used to not be so slow...
 public class TestReplicationHandler extends SolrTestCaseJ4 {
 
 
@@ -74,8 +77,12 @@ public class TestReplicationHandler exte
   // index from previous test method
   static int nDocs = 500;
 
+  // TODO: fix this test to not require FSDirectory.. doesnt even work with MockFSDirectory... wtf?
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "solr.StandardDirectoryFactory");
     master = new SolrInstance("master", null);
     master.setUp();
     masterJetty = createJetty(master);
@@ -105,6 +112,11 @@ public class TestReplicationHandler exte
     slaveJetty.stop();
     master.tearDown();
     slave.tearDown();
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
   }
 
   private static JettySolrRunner createJetty(SolrInstance instance) throws Exception {

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/spelling/suggest/SuggesterTest.java Mon Jan  2 16:26:10 2012
@@ -22,6 +22,7 @@ import java.io.File;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.SpellingParams;
 import org.apache.solr.common.util.NamedList;
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -31,10 +32,23 @@ public class SuggesterTest extends SolrT
    */
   protected String requestUri = "/suggest";
 
+  // TODO: fix this test to not require FSDirectory
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
     initCore("solrconfig-spellchecker.xml","schema-spellchecker.xml");
   }
+  
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
 
   public static void addDocs() throws Exception {
     assertU(adoc("id", "1",

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java Mon Jan  2 16:26:10 2012
@@ -17,16 +17,20 @@
 
 package org.apache.solr.update;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.store.Directory;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -37,10 +41,23 @@ import org.junit.Test;
  */
 public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
 
+  // TODO: fix this test to not require FSDirectory
+  static String savedFactory;
   @BeforeClass
   public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
     initCore("solrconfig.xml", "schema12.xml");
   }
+  
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
 
   @Override
   @Before
@@ -254,6 +271,54 @@ public class DirectUpdateHandlerTest ext
     sr.close();
   }
   
+  @Test
+  public void testPrepareCommit() throws Exception {
+    assertU(adoc("id", "999"));
+    assertU(optimize());     // make sure there's just one segment
+    assertU(commit());       // commit a second time to make sure index files aren't still referenced by the old searcher
+
+    SolrQueryRequest sr = req();
+    IndexReader r = sr.getSearcher().getTopReaderContext().reader;
+    Directory d = r.directory();
+
+    log.info("FILES before addDoc="+ Arrays.asList(d.listAll()));
+    assertU(adoc("id", "1"));
+
+    int nFiles = d.listAll().length;
+    log.info("FILES before prepareCommit="+ Arrays.asList(d.listAll()));
+
+    updateJ("", params("prepareCommit", "true"));
+
+    log.info("FILES after prepareCommit="+Arrays.asList(d.listAll()));
+    assertTrue( d.listAll().length > nFiles);  // make sure new index files were actually written
+    
+    assertJQ(req("q", "id:1")
+        , "/response/numFound==0"
+    );
+
+    updateJ("", params("rollback","true"));
+    assertU(commit());
+
+    assertJQ(req("q", "id:1")
+        , "/response/numFound==0"
+    );
+
+    assertU(adoc("id","1"));
+    updateJ("", params("prepareCommit","true"));
+
+    assertJQ(req("q", "id:1")
+        , "/response/numFound==0"
+    );
+
+    assertU(commit());
+
+    assertJQ(req("q", "id:1")
+        , "/response/numFound==1"
+    );
+
+    sr.close();
+  }
+  
 
 
 }

Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/update/TestIndexingPerformance.java Mon Jan  2 16:26:10 2012
@@ -22,6 +22,8 @@ import org.apache.solr.request.SolrQuery
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.common.util.StrUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,6 +37,22 @@ import java.util.Arrays;
  * $ ant test -Dtestcase=TestIndexingPerformance -Dargs="-server -Diter=100000"; grep throughput build/test-results/*TestIndexingPerformance.xml
  */
 public class TestIndexingPerformance extends AbstractSolrTestCase {
+  
+  // TODO: fix this test to not require FSDirectory
+  static String savedFactory;
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
+  }
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
 
   public static final Logger log 
     = LoggerFactory.getLogger(TestIndexingPerformance.class);

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/params/UpdateParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/params/UpdateParams.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/params/UpdateParams.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/params/UpdateParams.java Mon Jan  2 16:26:10 2012
@@ -23,7 +23,7 @@ package org.apache.solr.common.params;
  *
  * @since solr 1.2
  */
-public interface UpdateParams 
+public interface UpdateParams
 {
   
   /** wait for the search to warm up */
@@ -36,13 +36,16 @@ public interface UpdateParams 
   
   /** Commit everything after the command completes */
   public static String COMMIT = "commit";
-  
+
   /** Commit within a certain time period (in ms) */
   public static String COMMIT_WITHIN = "commitWithin";
 
   /** Optimize the index and commit everything after the command completes */
   public static String OPTIMIZE = "optimize";
-  
+
+  /** expert: calls IndexWriter.prepareCommit */
+  public static String PREPARE_COMMIT = "prepareCommit";
+
   /** Rollback update commands */
   public static String ROLLBACK = "rollback";
 

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/conf/solrconfig-slave1.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/conf/solrconfig-slave1.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/conf/solrconfig-slave1.xml (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/conf/solrconfig-slave1.xml Mon Jan  2 16:26:10 2012
@@ -25,7 +25,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.data.dir:}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
   <indexDefaults>
     <useCompoundFile>false</useCompoundFile>
     <mergeFactor>10</mergeFactor>

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/shared/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/shared/conf/solrconfig.xml?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/shared/conf/solrconfig.xml (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/test-files/solrj/solr/shared/conf/solrconfig.xml Mon Jan  2 16:26:10 2012
@@ -23,7 +23,7 @@
 <config>
   <luceneMatchVersion>${tests.luceneMatchVersion:LUCENE_CURRENT}</luceneMatchVersion>
   <dataDir>${solr.solr.home}/data/${l10n}-${version}</dataDir>
-
+  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.RAMDirectoryFactory}"/>
 
   <updateHandler class="solr.DirectUpdateHandler2" />
 

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Mon Jan  2 16:26:10 2012
@@ -280,7 +280,7 @@ abstract public class SolrExampleTests e
   }
   
   public void testUnicode() throws Exception {
-    int numIterations = 100 * RANDOM_MULTIPLIER;
+    int numIterations = atLeast(3);
     
     SolrServer server = getSolrServer();
     
@@ -302,7 +302,7 @@ abstract public class SolrExampleTests e
           }
         }
 
-        int numDocs = _TestUtil.nextInt(random, 1, 100);
+        int numDocs = _TestUtil.nextInt(random, 1, 10*RANDOM_MULTIPLIER);
         
         // Empty the database...
         server.deleteByQuery("*:*");// delete everything!

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrServer.java Mon Jan  2 16:26:10 2012
@@ -30,6 +30,8 @@ import org.apache.solr.client.solrj.resp
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.util.AbstractSolrTestCase;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 
 import java.io.File;
 import java.io.IOException;
@@ -48,6 +50,22 @@ public class TestLBHttpSolrServer extend
   SolrInstance[] solr = new SolrInstance[3];
   HttpClient httpClient;
 
+  // TODO: fix this test to not require FSDirectory
+  static String savedFactory;
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    savedFactory = System.getProperty("solr.DirectoryFactory");
+    System.setProperty("solr.directoryFactory", "org.apache.solr.core.MockFSDirectoryFactory");
+  }
+  @AfterClass
+  public static void afterClass() throws Exception {
+    if (savedFactory == null) {
+      System.clearProperty("solr.directoryFactory");
+    } else {
+      System.setProperty("solr.directoryFactory", savedFactory);
+    }
+  }
+  
   @Override
   public void setUp() throws Exception {
     super.setUp();

Modified: lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/test/org/apache/solr/common/util/ContentStreamTest.java Mon Jan  2 16:26:10 2012
@@ -71,6 +71,8 @@ public class ContentStreamTest extends L
     InputStream in = null;
     try {
       URLConnection conn = url.openConnection();
+      conn.setConnectTimeout(1000);
+      conn.setReadTimeout(1000);
       in = conn.getInputStream();
       contentType = conn.getContentType();
       content = IOUtils.toByteArray(in);

Modified: lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java Mon Jan  2 16:26:10 2012
@@ -82,7 +82,7 @@ public abstract class BaseDistributedSea
   // to stress with higher thread counts and requests, make sure the junit
   // xml formatter is not being used (all output will be buffered before
   // transformation to xml and cause an OOM exception).
-  protected int stress = 2;
+  protected int stress = TEST_NIGHTLY ? 2 : 0;
   protected boolean verifyStress = true;
   protected int nThreads = 3;
 

Modified: lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java?rev=1226460&r1=1226459&r2=1226460&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java (original)
+++ lucene/dev/branches/solrcloud/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java Mon Jan  2 16:26:10 2012
@@ -25,13 +25,13 @@ import org.apache.lucene.store.MockDirec
 import org.apache.lucene.util.LuceneTestCase;
 
 /**
- * Opens a directory with {@link LuceneTestCase#newFSDirectory(File)}
+ * Opens a directory with {@link LuceneTestCase#newDirectory()}
  */
 public class MockDirectoryFactory extends CachingDirectoryFactory {
 
   @Override
-  public Directory create(String path) throws IOException {
-    MockDirectoryWrapper dir = LuceneTestCase.newFSDirectory(new File(path));
+  protected Directory create(String path) throws IOException {
+    MockDirectoryWrapper dir = LuceneTestCase.newDirectory();
     // Somehow removing unref'd files in Solr tests causes
     // problems... there's some interaction w/
     // CachingDirectoryFactory.  Once we track down where Solr
@@ -39,4 +39,21 @@ public class MockDirectoryFactory extend
     dir.setAssertNoUnrefencedFilesOnClose(false);
     return dir;
   }
+  
+  @Override
+  public boolean exists(String path) {
+    String fullPath = new File(path).getAbsolutePath();
+    synchronized (DirectoryFactory.class) {
+      CacheValue cacheValue = byPathCache.get(fullPath);
+      Directory directory = null;
+      if (cacheValue != null) {
+        directory = cacheValue.directory;
+      }
+      if (directory == null) {
+        return false;
+      } else {
+        return true;
+      }
+    }
+  }
 }