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 13:58:42 UTC

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

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

 ##########
 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:
   I ran this test a few times, and noticed it takes 2-3 minutes to complete. Was it this slow before? I don't remember it taking so long in the previous version. Perhaps it's because it's Nightly now so the constants are made larger?

----------------------------------------------------------------
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