Elliott Bradshaw created LUCENE-6319:
----------------------------------------

             Summary: Delegating OneMerge
                 Key: LUCENE-6319
                 URL: https://issues.apache.org/jira/browse/LUCENE-6319
             Project: Lucene - Core
          Issue Type: New Feature
          Components: core/index
            Reporter: Elliott Bradshaw
            Priority: Minor


In trying to integrate SortingMergePolicy into ElasticSearch, I ran into an 
issue where the custom merge logic was being stripped out by 
IndexUpgraderMergeSpecification.  Related issue here:

https://github.com/elasticsearch/elasticsearch/issues/9731

In an endeavor to fix this, I attempted to create a DelegatingOneMerge that 
could be used to chain the different MergePolicies together.  I quickly 
discovered this to be impossible, due to the direct member variable access of 
OneMerge by IndexWriter and other classes.  It would be great if this variable 
access could be privatized and the consuming classes modified to use the 
appropriate getters and setters.  Here's an example DelegatingOneMerge and 
modified OneMerge.

https://gist.github.com/ebradshaw/e0b74e9e8d4976ab9e0a
https://gist.github.com/ebradshaw/d72116a014f226076303

The downside here is that this would require an API change, as there are three 
public variables in OneMerge: estimatedMergeBytes, segments and totalDocCount.  
These would have to be moved behind public getters.

Without this change, I'm not sure how we could get the SortingMergePolicy 
working in ES, but if anyone has any other suggestions I'm all ears!  Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to