msokolov commented on a change in pull request #1313: LUCENE-8962: Split test case URL: https://github.com/apache/lucene-solr/pull/1313#discussion_r388264716
########## 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: Yes, I think given it does not assert anything -- just makes sure no exceptions occur -- we should already be well-covered. ---------------------------------------------------------------- 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: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org