[ https://issues.apache.org/jira/browse/HADOOP-11707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14366718#comment-14366718 ]
Kai Zheng commented on HADOOP-11707: ------------------------------------ Hi [~umamaheswararao], Thanks for your review and comments. Yes I agree, sounds a bit too many factories since we're having one for each pair of raw encoder and decoder. A good suggestion to have only one factory for all raw coders to create encoder/decoder with a type. Static type or enum doesn't allow to support new coders as we have to add new entries for them; dynamic type like string name will need a registry to support dynamic lookup, to fill the registry will also need some work like service locators. Both ways seem a bit heavier. Considering raw coders are only used by {{ErasureCoder}}, where it's clear to use which erasure codes and therefore raw coders, so what's really needed here is to support creating different implementation of raw coders in certain codes. The factory groups raw encoder and decoder together, to ease configuration of them for a {{ErasureCoder}} since we don't need to configure encoder and decoder respectively. It's a little like socket factory that creates server socket and client sockets. Currently the factory logic is quite simple, but later when we support multiple modes or derivations for a code, the factory logic will have more sense then. Please kindly let me know if I'm clear or more worse. :) Thanks. > Add factory to create raw erasure coder > --------------------------------------- > > Key: HADOOP-11707 > URL: https://issues.apache.org/jira/browse/HADOOP-11707 > Project: Hadoop Common > Issue Type: Sub-task > Components: io > Reporter: Kai Zheng > Assignee: Kai Zheng > Fix For: HDFS-7285 > > Attachments: HADOOP-11707-v1.patch > > > We have {{RawErasureEncoder}} and {{RawErasureDecoder}} interface separately, > which simplifies the implementation of raw coders. This would require to > configure raw encoder and decoder respectively for a {{ErasureCoder}}, which > isn't convenient. To simplify the configuration, we would have coder factory > to group encoder and decoder together so only a factory class needs to be > configured. -- This message was sent by Atlassian JIRA (v6.3.4#6332)