leventov opened a new issue #7287: Refactor AggregatorFactory interface into 
two different interfaces, return the second one from getCombiningFactory()
URL: https://github.com/apache/incubator-druid/issues/7287
 
 
   Currently, `AggregatorFactory.getCombiningFactory()` and 
`getMergingFactory()` should return an instance of `AggregatorFactory` 
interface, which has a lot of methods that are common with the base 
`AggregatorFactory`. It provokes developers to "cut the corner" by extending 
the base `AggregatorFactory`. But they often forget to override 
`makeAggregateCombiner()` method, see #6039 and #7243.
   
   Solution: extract a separate aggregating interface that has only 
aggregation-related methods and methods that manipulate the objects, but 
doesn't have `getName()`, `requiredFields()` (?), `getTypeName()` (?), and 
`getMergingFactory()` and `getCombiningFactory()` themselves. Then this 
secondary interface is returned from methods `getCombiningFactory()` and 
`getAggregationFactory()` (a new method).
   
   It may be that this secondary interface should better be called 
"AggregatorFactory" (like the former conflated interface), while the basic 
interface should be renamed somehow.
   
   Other issues that might be related: #7019 and #6858.

----------------------------------------------------------------
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: commits-unsubscr...@druid.apache.org
For additional commands, e-mail: commits-h...@druid.apache.org

Reply via email to