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/06/05 18:55:21 UTC
svn commit: r1346466 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/index/
lucene/test-framework/
lucene/test-framework/src/java/org/apache/lucene/index/
Author: mikemccand
Date: Tue Jun 5 16:55:21 2012
New Revision: 1346466
URL: http://svn.apache.org/viewvc?rev=1346466&view=rev
Log:
diagnostics for merged segments weren't being; add test coverage for that and for segment warming
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1346466&r1=1346465&r2=1346466&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Tue Jun 5 16:55:21 2012
@@ -3310,20 +3310,21 @@ public class IndexWriter implements Clos
checkpoint();
}
- Map<String,String> details = new HashMap<String,String>();
- details.put("mergeMaxNumSegments", ""+merge.maxNumSegments);
- details.put("mergeFactor", Integer.toString(merge.segments.size()));
-
// Bind a new segment name here so even with
// ConcurrentMergePolicy we keep deterministic segment
// names.
final String mergeSegmentName = newSegmentName();
- SegmentInfo si = new SegmentInfo(directory, Constants.LUCENE_MAIN_VERSION, mergeSegmentName, -1, false, codec, details, null);
+ SegmentInfo si = new SegmentInfo(directory, Constants.LUCENE_MAIN_VERSION, mergeSegmentName, -1, false, codec, null, null);
merge.info = new SegmentInfoPerCommit(si, 0, -1L);
// Lock order: IW -> BD
bufferedDeletesStream.prune(segmentInfos);
+ Map<String,String> details = new HashMap<String,String>();
+ details.put("mergeMaxNumSegments", ""+merge.maxNumSegments);
+ details.put("mergeFactor", Integer.toString(merge.segments.size()));
+ setDiagnostics(si, "merge", details);
+
if (infoStream.isEnabled("IW")) {
infoStream.message("IW", "merge seg=" + merge.info.info.name);
}
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java?rev=1346466&r1=1346465&r2=1346466&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java Tue Jun 5 16:55:21 2012
@@ -334,6 +334,19 @@ public abstract class ThreadedIndexingAn
try {
final IndexSearcher s = getCurrentSearcher();
try {
+ // Verify 1) IW is correctly setting
+ // diagnostics, and 2) segment warming for
+ // merged segments is actually happening:
+ for(AtomicReader sub : ((DirectoryReader) s.getIndexReader()).getSequentialSubReaders()) {
+ SegmentReader segReader = (SegmentReader) sub;
+ Map<String,String> diagnostics = segReader.getSegmentInfo().info.getDiagnostics();
+ assertNotNull(diagnostics);
+ String source = diagnostics.get("source");
+ assertNotNull(source);
+ if (source.equals("merge")) {
+ assertTrue("sub reader " + sub + " wasn't warmed", warmed.containsKey(((SegmentReader) sub).core));
+ }
+ }
if (s.getIndexReader().numDocs() > 0) {
smokeTestSearcher(s);
Fields fields = MultiFields.getFields(s.getIndexReader());
@@ -405,6 +418,8 @@ public abstract class ThreadedIndexingAn
protected void doClose() throws Exception {
}
+ private final Map<SegmentCoreReaders,Boolean> warmed = new WeakHashMap<SegmentCoreReaders,Boolean>();
+
public void runTest(String testName) throws Exception {
failed.set(false);
@@ -442,6 +457,7 @@ public abstract class ThreadedIndexingAn
if (VERBOSE) {
System.out.println("TEST: now warm merged reader=" + reader);
}
+ warmed.put(((SegmentReader) reader).core, Boolean.TRUE);
final int maxDoc = reader.maxDoc();
final Bits liveDocs = reader.getLiveDocs();
int sum = 0;