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

Wellington Chevreuil commented on HBASE-21393:
----------------------------------------------

Hi [~tianjingyun], tested this patch on top of hbase-operator-tools master 
branch, and have some remarks about it:

1) Had noticed it relies on HBASE-21322, at the server side, as this was when 
*scheduleServerCrashProcedure* was added to Master RPC interface. This is only 
available from hbase version 2.1.2, so maybe we should raise *hbase.version* 
from 2.1.1 to 2.1.2 on the parent pom file?

2) Also had problems related to guava version, when running unit tests:
{noformat}
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.012 s 
- in org.apache.hbase.TestHBCKCommandLineParsing
[INFO] Running org.apache.hbase.TestHBCK2
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.005 s 
<<< FAILURE! - in org.apache.hbase.TestHBCK2
[ERROR] org.apache.hbase.TestHBCK2  Time elapsed: 0.005 s  <<< ERROR!
java.lang.NoSuchMethodError: 
com.google.common.base.Objects.toStringHelper(Ljava/lang/Object;)Lcom/google/common/base/Objects$ToStringHelper;
        at 
org.apache.hadoop.metrics2.lib.MetricsRegistry.toString(MetricsRegistry.java:414)
        at java.lang.String.valueOf(String.java:2994)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at org.apache.hadoop.ipc.metrics.RpcMetrics.<init>(RpcMetrics.java:74)
        at org.apache.hadoop.ipc.metrics.RpcMetrics.create(RpcMetrics.java:80)
        at org.apache.hadoop.ipc.Server.<init>(Server.java:2382)
        at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:951)
        at 
org.apache.hadoop.ipc.ProtobufRpcEngine$Server.<init>(ProtobufRpcEngine.java:534)
        at 
org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:509)
        at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:796)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.<init>(NameNodeRpcServer.java:345)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:675)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:648)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:820)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:804)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1516)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNode(MiniDFSCluster.java:1119)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:990)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:819)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:748)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:666)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:638)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:989)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:869)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:851)
        at 
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster(HBaseTestingUtility.java:833)
        at org.apache.hbase.TestHBCK2.beforeClass(TestHBCK2.java:53)
{noformat}
It happens on hdfs level, hadoop depends on guava *11.0.2*, so modifying pom to 
use this version, instead, works. However, we are just using guava classes here 
for splitting server name, which is quite trivial and could be done using 
standard java class only. I guess that would be preferable as would avoid 
adding this guava dependency.

3) Could we add some unit tests, covering basic happy scenario and edge cases? 
Some quick thought scenarios: 1) pass a valid server name format, but server 
not listed as either online, nor offline; 2) pass a valid server name for an 
online; 3) pass invalid server name format; 4) pass same valid server name 
twice;

> Add an API  ScheduleSCP() to HBCK2
> ----------------------------------
>
>                 Key: HBASE-21393
>                 URL: https://issues.apache.org/jira/browse/HBASE-21393
>             Project: HBase
>          Issue Type: Sub-task
>          Components: hbase-operator-tools, hbck2
>            Reporter: Jingyun Tian
>            Assignee: Jingyun Tian
>            Priority: Major
>         Attachments: 0001-HBASE-21393-Add-an-API-ScheduleSCP-to-HBCK2.patch, 
> 0002-HBASE-21393-Add-an-API-ScheduleSCP-to-HBCK2.patch
>
>
> Add the API of ScheduleSCP() to hbase-operator-tools so that operators can 
> schedule ServerCrashProcedures of specified regionservers.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to