You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by GitBox <gi...@apache.org> on 2020/03/04 19:45:39 UTC

[GitHub] [lucene-solr] msfroh commented on a change in pull request #1313: LUCENE-8962: Split test case

msfroh commented on a change in pull request #1313: LUCENE-8962: Split test case
URL: https://github.com/apache/lucene-solr/pull/1313#discussion_r387894237
 
 

 ##########
 File path: lucene/core/src/test/org/apache/lucene/index/TestIndexWriterMergePolicy.java
 ##########
 @@ -298,63 +320,44 @@ public void testMergeOnCommit() throws IOException, InterruptedException {
     DirectoryReader firstReader = DirectoryReader.open(firstWriter);
     assertEquals(5, firstReader.leaves().size());
     firstReader.close();
-    firstWriter.close();
-
-    MergePolicy mergeOnCommitPolicy = new LogDocMergePolicy() {
-      @Override
-      public MergeSpecification findFullFlushMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, MergeContext mergeContext) {
-        // Optimize down to a single segment on commit
-        if (mergeTrigger == MergeTrigger.COMMIT && segmentInfos.size() > 1) {
-          List<SegmentCommitInfo> nonMergingSegments = new ArrayList<>();
-          for (SegmentCommitInfo sci : segmentInfos) {
-            if (mergeContext.getMergingSegments().contains(sci) == false) {
-              nonMergingSegments.add(sci);
-            }
-          }
-          if (nonMergingSegments.size() > 1) {
-            MergeSpecification mergeSpecification = new MergeSpecification();
-            mergeSpecification.add(new OneMerge(nonMergingSegments));
-            return mergeSpecification;
-          }
-        }
-        return null;
-      }
-    };
+    firstWriter.close(); // When this writer closes, it does not merge on commit.
 
-    AtomicInteger abandonedMerges = new AtomicInteger(0);
     IndexWriterConfig iwc = newIndexWriterConfig(new MockAnalyzer(random()))
-        .setMergePolicy(mergeOnCommitPolicy)
-        .setIndexWriterEvents(new IndexWriterEvents() {
-          @Override
-          public void beginMergeOnCommit() {
-
-          }
-
-          @Override
-          public void finishMergeOnCommit() {
+        .setMergePolicy(MERGE_ON_COMMIT_POLICY);
 
-          }
-
-          @Override
-          public void abandonedMergesOnCommit(int abandonedCount) {
-            abandonedMerges.incrementAndGet();
-          }
-        });
     IndexWriter writerWithMergePolicy = new IndexWriter(dir, iwc);
-
-    writerWithMergePolicy.commit();
+    writerWithMergePolicy.commit(); // No changes. Commit doesn't trigger a merge.
 
     DirectoryReader unmergedReader = DirectoryReader.open(writerWithMergePolicy);
-    assertEquals(5, unmergedReader.leaves().size()); // Don't merge unless there's a change
+    assertEquals(5, unmergedReader.leaves().size());
     unmergedReader.close();
 
     TestIndexWriter.addDoc(writerWithMergePolicy);
-    writerWithMergePolicy.commit();
+    writerWithMergePolicy.commit(); // Doc added, do merge on commit.
+    assertEquals(1, writerWithMergePolicy.getSegmentCount()); //
 
     DirectoryReader mergedReader = DirectoryReader.open(writerWithMergePolicy);
-    assertEquals(1, mergedReader.leaves().size()); // Now we merge on commit
+    assertEquals(1, mergedReader.leaves().size());
     mergedReader.close();
 
+    try (IndexReader reader = writerWithMergePolicy.getReader()) {
+      IndexSearcher searcher = new IndexSearcher(reader);
+      assertEquals(6, reader.numDocs());
+      assertEquals(6, searcher.count(new MatchAllDocsQuery()));
+    }
+
+    writerWithMergePolicy.close();
+    dir.close();
+  }
+
+   // Test that when we have multiple indexing threads merging on commit, we never throw an exception.
+  @Nightly
 
 Review comment:
   Oh, that's probably the case.
   
   Given that there are other tests that flex indexing across multiple threads and `MockRandomMergePolicy` will occasionally merge on commit, maybe this test doesn't add any value?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org