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 2007/07/04 21:03:21 UTC

svn commit: r553298 - in /lucene/java/trunk/src: java/org/apache/lucene/index/DocumentsWriter.java java/org/apache/lucene/index/SegmentInfo.java test/org/apache/lucene/index/TestIndexWriter.java

Author: mikemccand
Date: Wed Jul  4 12:03:21 2007
New Revision: 553298

URL: http://svn.apache.org/viewvc?view=rev&rev=553298
Log:
LUCENE-843: SegmentInfo.clone() failed to copy some fields; in certain cases _x.nrm might not be created even when fieldInfos says it has norms

Modified:
    lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
    lucene/java/trunk/src/java/org/apache/lucene/index/SegmentInfo.java
    lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriter.java

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java?view=diff&rev=553298&r1=553297&r2=553298
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/DocumentsWriter.java Wed Jul  4 12:03:21 2007
@@ -338,7 +338,6 @@
     postingsIsFull = false;
     flushPending = false;
     segment = null;
-    hasNorms = false;
     numDocsInRAM = 0;
     nextDocID = 0;
     nextWriteDocID = 0;
@@ -1803,7 +1802,6 @@
 
     if (hasNorms) {
       writeNorms(segmentName, numDocsInRAM);
-      hasNorms = false;
       flushedFiles.add(segmentFileName(IndexFileNames.NORMS_EXTENSION));
     }
 

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/SegmentInfo.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/SegmentInfo.java?view=diff&rev=553298&r1=553297&r2=553298
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/SegmentInfo.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/SegmentInfo.java Wed Jul  4 12:03:21 2007
@@ -248,6 +248,9 @@
     if (normGen != null) {
       si.normGen = (long[]) normGen.clone();
     }
+    si.docStoreOffset = docStoreOffset;
+    si.docStoreSegment = docStoreSegment;
+    si.docStoreIsCompoundFile = docStoreIsCompoundFile;
     return si;
   }
 

Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriter.java?view=diff&rev=553298&r1=553297&r2=553298
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexWriter.java Wed Jul  4 12:03:21 2007
@@ -1293,6 +1293,21 @@
       dir.close();
     }
 
+    // Make sure we can flush segment w/ norms, then add
+    // empty doc (no norms) and flush
+    public void testEmptyDocAfterFlushingRealDoc() throws IOException {
+      Directory dir = new RAMDirectory();
+      IndexWriter writer  = new IndexWriter(dir, new WhitespaceAnalyzer(), true);      
+      Document doc = new Document();
+      doc.add(new Field("field", "aaa", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
+      writer.addDocument(doc);
+      writer.flush();
+      writer.addDocument(new Document());
+      writer.close();
+      IndexReader reader = IndexReader.open(dir);
+      assertEquals(2, reader.numDocs());
+    }
+
     private void rmDir(File dir) {
         File[] files = dir.listFiles();
         if (files != null) {