You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/10/01 19:56:11 UTC

svn commit: r1392482 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/index/ lucene/core/src/test/org/apache/lucene/index/

Author: mikemccand
Date: Mon Oct  1 17:56:10 2012
New Revision: 1392482

URL: http://svn.apache.org/viewvc?rev=1392482&view=rev
Log:
LUCENE-4455: fix SIPC.sizeInBytes() to not double-count; fix CheckIndex to not reverse 'has deletions'/'no deletions'

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java

Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1392482&r1=1392481&r2=1392482&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Mon Oct  1 17:56:10 2012
@@ -204,6 +204,11 @@ Bug Fixes
   parameter is reset to the default (1), even if set otherwise.
   (Gilad Barkai via Shai Erera)
 
+* LUCENE-4455: Fix bug in SegmentInfoPerCommit.sizeInBytes() that was
+  returning 2X the true size, inefficiently.  Also fixed bug in
+  CheckIndex that would report no deletions when a segment has
+  deletions, and vice/versa.  (Uwe Schindler, Robert Muir, Mike McCandless)
+
 Optimizations
 
 * LUCENE-4322: Decrease lucene-core JAR size. The core JAR size had increased a

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java?rev=1392482&r1=1392481&r2=1392482&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java Mon Oct  1 17:56:10 2012
@@ -520,7 +520,7 @@ public class CheckIndex {
 
         // TODO: we could append the info attributes() to the msg?
 
-        if (info.hasDeletions()) {
+        if (!info.hasDeletions()) {
           msg("    no deletions");
           segInfoStat.hasDeletions = false;
         }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java?rev=1392482&r1=1392481&r2=1392482&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java Mon Oct  1 17:56:10 2012
@@ -67,9 +67,7 @@ public class SegmentInfoPerCommit {
    *  segment. */
   public long sizeInBytes() throws IOException {
     if (sizeInBytes == -1) {
-      final Collection<String> files = new HashSet<String>();
-      info.getCodec().liveDocsFormat().files(this, files);
-      long sum = info.sizeInBytes();
+      long sum = 0;
       for (final String fileName : files()) {
         sum += info.dir.fileLength(fileName);
       }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java?rev=1392482&r1=1392481&r2=1392482&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexWriterDelete.java Mon Oct  1 17:56:10 2012
@@ -17,7 +17,9 @@ package org.apache.lucene.index;
  * limitations under the License.
  */
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.PrintStream;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -1071,4 +1073,47 @@ public class TestIndexWriterDelete exten
     w.close();
     dir.close();
   }
+
+  // LUCENE-4455
+  public void testDeletesCheckIndexOutput() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriterConfig iwc = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
+    iwc.setMaxBufferedDocs(2);
+    IndexWriter w = new IndexWriter(dir, iwc);
+    Document doc = new Document();
+    doc.add(newField("field", "0", StringField.TYPE_NOT_STORED));
+    w.addDocument(doc);
+
+    doc = new Document();
+    doc.add(newField("field", "1", StringField.TYPE_NOT_STORED));
+    w.addDocument(doc);
+    w.commit();
+    assertEquals(1, w.getSegmentCount());
+
+    w.deleteDocuments(new Term("field", "0"));
+    w.commit();
+    assertEquals(1, w.getSegmentCount());
+    w.close();
+
+    ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
+    CheckIndex checker = new CheckIndex(dir);
+    checker.setInfoStream(new PrintStream(bos, false, "UTF-8"), false);
+    CheckIndex.Status indexStatus = checker.checkIndex(null);
+    assertTrue(indexStatus.clean);
+    String s = bos.toString("UTF-8");
+
+    // Segment should have deletions:
+    assertTrue(s.contains("has deletions"));
+    w = new IndexWriter(dir, iwc);
+    w.forceMerge(1);
+    w.close();
+
+    bos = new ByteArrayOutputStream(1024);
+    checker.setInfoStream(new PrintStream(bos, false, "UTF-8"), false);
+    indexStatus = checker.checkIndex(null);
+    assertTrue(indexStatus.clean);
+    s = bos.toString("UTF-8");
+    assertFalse(s.contains("has deletions"));
+    dir.close();
+  }
 }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java?rev=1392482&r1=1392481&r2=1392482&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestRollingUpdates.java Mon Oct  1 17:56:10 2012
@@ -133,6 +133,21 @@ public class TestRollingUpdates extends 
     docs.close();
     
     _TestUtil.checkIndex(dir);
+
+    // LUCENE-4455:
+    SegmentInfos infos = new SegmentInfos();
+    infos.read(dir);
+    long totalBytes = 0;
+    for(SegmentInfoPerCommit sipc : infos) {
+      totalBytes += sipc.sizeInBytes();
+    }
+    long totalBytes2 = 0;
+    for(String fileName : dir.listAll()) {
+      if (!fileName.startsWith(IndexFileNames.SEGMENTS)) {
+        totalBytes2 += dir.fileLength(fileName);
+      }
+    }
+    assertEquals(totalBytes2, totalBytes);
     dir.close();
   }