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;