[
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)