Eric Newton and I were just discussing this. We were talking about limiting the scope of this for 1.6 w/o precluding useful changes that we are aware of for later versions.
Some changes we disccused for 1.6.
- Move chop logic completely outside of compaction strategy (So user can not break merges). Also do not invoke compaction strategy for user initiated compactions.
- Move delete propagation logic outside of compaction strategy
- Gear APIs for 1.6 twoards 1 output file, but structure current API such that support multiple files can be added in future w/o breaking compaction strategies written for 1.6.
- Return a single list of output files, dropping passes. The implementation may still do multiple passes, but the strategy will not have control over this.
- Push allowing users to specify a compaction strategy (and config for the strategy) on a user initiated compaction to a later release.