You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by Lokesh Khurana <lo...@salesforce.com.INVALID> on 2020/01/07 12:54:17 UTC

Make ClusterManager interface and it's implementations as Consumable Public API

Hi HBase Devs,

Currently, Chaos Monkey does all the destructive actions by using
passwordless-ssh with the help of HbaseClusterManager Class.
This class uses RemoteShell and CommandProvider classes to perform
these actions.

In our test framework,we are trying to bypass passwordless-ssh to perform
destructive actions of Chaos Monkey.
For these, we want to extend HBaseClusterManager Class (or ClusterManager
interface) so we can create task in ZooKeeper,
which will be executed by our framework as local action for intended hosts.

Here ClusterManager Interface and its implementation HBaseClusterManager
class are InterfaceAudience.Private, so they are not visible outside
package level access.
Also any implementation of ClusterManager needs to be merged with hbase-it
package.
CommandProvider Class, which creates commands for ssh based actions, has
access type default in HBaseClusterManager class, because of that we can
not re-use CommandProvider class.

To have our own implementation outside hbase-testing-util, we wanted to
make this classes InterfaceAudience.Public. As discussed on HBASE-23640
<https://issues.apache.org/jira/browse/HBASE-23640>, it would be an
anti-pattern to expose these API directly.
Currently We have thought of below improvements to do in hbase-it package
to achieve our goal :-

1. Move ClusterManager interface and its implementation out of hbase-it
package and create a separate artifact (Exposing them directly won't be a
right approach)
2. Make ClusterManager interface as well as it's implementation public so
it can be extended with minimum effort.
3. Separate out CommandProvider Class

Currently we have filled two JIRAs :- HBASE-23639
<https://issues.apache.org/jira/browse/HBASE-23639> HBASE-23640
<https://issues.apache.org/jira/browse/HBASE-23640>

It would be helpful to get more suggestions for theses changes and how to
implement them like weather we need to move this into separate
hbase-package.

-- 
Thanks,
Lokesh