You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2009/03/22 14:21:58 UTC

svn commit: r757185 - in /lucene/java/trunk/src: java/org/apache/lucene/index/SegmentReader.java test/org/apache/lucene/index/TestIndexReaderClone.java

Author: mikemccand
Date: Sun Mar 22 13:21:58 2009
New Revision: 757185

URL: http://svn.apache.org/viewvc?rev=757185&view=rev
Log:
fix clone() case that could incorrectly leave stored fields files open

Modified:
    lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java
    lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReaderClone.java

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java?rev=757185&r1=757184&r2=757185&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/SegmentReader.java Sun Mar 22 13:21:58 2009
@@ -676,10 +676,7 @@
       clone.freqStream = freqStream;
       clone.proxStream = proxStream;
       clone.termVectorsReaderOrig = termVectorsReaderOrig;
-  
-      if (fieldsReaderOrig != null) {
-        clone.fieldsReaderOrig = (FieldsReader) fieldsReaderOrig.clone();
-      }      
+      clone.fieldsReaderOrig = fieldsReaderOrig;
       
       if (doClone) {
         if (deletedDocs != null) {

Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReaderClone.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReaderClone.java?rev=757185&r1=757184&r2=757185&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReaderClone.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReaderClone.java Sun Mar 22 13:21:58 2009
@@ -20,6 +20,8 @@
 import org.apache.lucene.index.SegmentReader.Norm;
 import org.apache.lucene.search.Similarity;
 import org.apache.lucene.analysis.SimpleAnalyzer;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.lucene.store.MockRAMDirectory;
@@ -440,4 +442,19 @@
     r1.close();
     dir1.close();
   }
+
+  public void testCloseStoredFields() throws Exception {
+    final Directory dir = new MockRAMDirectory();
+    IndexWriter w = new IndexWriter(dir, new SimpleAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED);
+    w.setUseCompoundFile(false);
+    Document doc = new Document();
+    doc.add(new Field("field", "yes it's stored", Field.Store.YES, Field.Index.ANALYZED));
+    w.addDocument(doc);
+    w.close();
+    IndexReader r1 = IndexReader.open(dir);
+    IndexReader r2 = (IndexReader) r1.clone(false);
+    r1.close();
+    r2.close();
+    dir.close();
+  }
 }