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:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]