[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16044692#comment-16044692 ] Andrew Purtell commented on HBASE-18037: Thank you! > 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 >Assignee: Duo Zhang >Priority: Blocker > Fix For: 2.0.0, 3.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)
[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16043919#comment-16043919 ] stack commented on HBASE-18037: --- Thanks for knocking down a blocker [~Apache9] > 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 >Assignee: Duo Zhang >Priority: Blocker > Fix For: 2.0.0, 3.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)
[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16011574#comment-16011574 ] Andrew Purtell commented on HBASE-18037: bq. 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. Sounds good [~Apache9]. I see you filed HBASE-18050 for followup > 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: Blocker > 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)
[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16007741#comment-16007741 ] Anoop Sam John commented on HBASE-18037: May be some of these methods in the interfaces (which are limited private) do not actually needed in the interface. Only the call stack some where uses these methods and for that we end up using interfaces. Agree need a thorough check and make a clean up before 2.0 > 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)
[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ 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)
[jira] [Commented] (HBASE-18037) Do not expose implementation classes to CP
[ https://issues.apache.org/jira/browse/HBASE-18037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16007515#comment-16007515 ] Duo Zhang commented on HBASE-18037: --- [~apurtell] FYI. > 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)