[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16007534#comment-16007534 ]
Duo Zhang commented on HBASE-18037: ----------------------------------- And another concern is that in the interfaces which are declared as IA.LimitedPrivate, the return value or parameters may be declared as IA.Private. For example, Store.getScanner will return a KeyValueScanner and KeyValueScanner is declared as IA.Private, and one of the parameters of this method is ScanQueryMatcher, which is also declared as IA.Private. A possible explaination is that, you are free to hold a reference to a class which is declared as IA.Private, but you can only use it as a monolithic object. You can use it as a parameter to call a method, or use it as a return value, but you should never try to call its methods to change its state of do something else. What do you think [~apurtell]? I think we need to explain this in our ref guide? Thanks. > Do not expose implementation classes to CP > ------------------------------------------ > > Key: HBASE-18037 > URL: https://issues.apache.org/jira/browse/HBASE-18037 > Project: HBase > Issue Type: Umbrella > Components: Coprocessors > Affects Versions: 2.0.0 > Reporter: Duo Zhang > Priority: Critical > Fix For: 2.0.0 > > > For example, StoreFile. Expose the implementation classes to CP will make it > harder to implement new features or improve the old implementation. -- This message was sent by Atlassian JIRA (v6.3.15#6346)