[ 
https://issues.apache.org/jira/browse/HBASE-23639?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17044784#comment-17044784
 ] 

Sean Busbey commented on HBASE-23639:
-------------------------------------

{quote}
Sean Busbey by making the classes IA.LimitedPrivate, they can only be used by a 
group of projects and can't be used if someone creates a new project.
{quote}

This is part of our overloaded use of IA.LimitedPrivate. We essentially define 
audiences for our LimitedPrivate definitions in {{HBaseInterfaceAudience}}. One 
of those is a downstream project (i.e. Phoenix), but several are about 
downstream folks who are working in the grey area between things we expressly 
encourage use of and things we are likely to want the prerogative to break at 
will.

For example {{HIA.COPROC}} and {{HIA.REPLICATION}} are both for folks who want 
to make use of some customization points that are very much still internals of 
HBase. I think similarly having a {{HIA.CHAOS}} or {{HIA.INTEGRATION_TEST}} 
would serve an analogous purpose for what you're trying to accomplish here.

{quote}
In HBaseClusterManager, CommandProvider is present which gives back commands to 
execute the operations, which can be used by downstream , which will enable 
anyone to use these functionalities without breaking current implementation by 
ssh.

We have also created a Jira for making CommandProvider Public as well, as if 
someone wants to create a CommandProvider for YARN and wanted 
HBaseClusterManager to pick that up right now it can't be done. 
{quote}

I'll try to set aside time to look at the specifics of CommandProvider to see 
how it fits with the question I'm asking. Your comment on "without breaking the 
current implementation by ssh" has things backwards. In general we should be 
picking interface annotations that aim for the most restrictive answer to "what 
can I change in this current implementation without breaking someone else". 
From an interface perspective we need not worry about breaking the current 
implementation via ssh because we control that code and the code that executes 
it.

> Change InterfaceAudience for ClusterManager interface and HBaseClusterManager 
> class public 
> -------------------------------------------------------------------------------------------
>
>                 Key: HBASE-23639
>                 URL: https://issues.apache.org/jira/browse/HBASE-23639
>             Project: HBase
>          Issue Type: Improvement
>          Components: API, integration tests, test
>    Affects Versions: master
>            Reporter: Mihir Monani
>            Assignee: Lokesh Khurana
>            Priority: Minor
>         Attachments: HBASE-23639-master.patch
>
>
> In hbase-it package, Class like RESTApiClusterManager and HBaseClusterManager 
> which has some part of implementation code for Chaos Action.
>  
> If any user wants to create private implementation which resembles 
> HBaseClusterManager, then it has to be merged with hbase-it package as 
> ClusterManager Interface and it's extended implementations are private. 
>  
> We should make them public so anyone can have their own implementation and 
> need to be merged with hbase-it. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to