[ https://issues.apache.org/jira/browse/HADOOP-12973?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230772#comment-15230772 ]
Colin Patrick McCabe commented on HADOOP-12973: ----------------------------------------------- Part of the reason I believe there should be a builder is because otherwise, we have no way of adding new parameters in a backwards compatible way. For example, if we want to add a Foobar parameter to the constructor, we can't do that in a compatible fashion since the Factory is hard-coded to look for a 3-argument constructor with {{File, long, long}} by this code: {code} 37 Constructor<? extends GetSpaceUsed> cons = 38 duKlass.getConstructor(File.class, long.class, long.class); {code} And if I accidentally implement a constructor with File, long, long that uses those parameters for something else, weird stuff happens. For example, if I have a constructor like this: {{MyGetSpaceUsedSubclass(File birthdayMessage, long numberOfClowns, long numberOfBirthdayCakes)}}, the factory will happily find it and pass it arguments that make no sense. This can all be avoided by just passing the Builder object to the constructor. > make DU pluggable > ----------------- > > Key: HADOOP-12973 > URL: https://issues.apache.org/jira/browse/HADOOP-12973 > Project: Hadoop Common > Issue Type: Sub-task > Reporter: Elliott Clark > Assignee: Elliott Clark > Attachments: HADOOP-12973v0.patch, HADOOP-12973v1.patch, > HADOOP-12973v10.patch, HADOOP-12973v2.patch, HADOOP-12973v3.patch, > HADOOP-12973v5.patch, HADOOP-12973v6.patch, HADOOP-12973v7.patch, > HADOOP-12973v8.patch, HADOOP-12973v9.patch > > > If people are concerned about replacing the call to DU. Then an easy first > step is to make it pluggable. Then it's possible to replace it with something > while leaving the default alone. -- This message was sent by Atlassian JIRA (v6.3.4#6332)