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();
}