You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Appy (JIRA)" <ji...@apache.org> on 2017/01/03 15:43:58 UTC
[jira] [Commented] (HBASE-16010) Put draining function through
Admin API
[ https://issues.apache.org/jira/browse/HBASE-16010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15795329#comment-15795329 ]
Appy commented on HBASE-16010:
------------------------------
Sorry for late review, was away on vacation. Please consider making following changes in an addendum patch.
bq. Instead of draining, we should use the term decommission/recommission I think
Would be great to use Enis's above suggestion. Instead of drainRegionServers*/removeDrainFromRegionServers* in functions and PBs, decommissionRegionServers*/recommissionRegionServers* would have been better.
bq. ListDrainingRegionServersRequest.newBuilder().build()
ListDrainingRegionServersRequest.getDefaultInstance()
bq. listDrainingRegionServers(null, req)
Why is it null?
bq.
{noformat}
1702 try {
1703 master.checkInitialized();
1704 List<ServerName> servers = master.listDrainingRegionServers();
1705 for (ServerName server : servers) {
1706 response.addServerName(ProtobufUtil.toServerName(server));
1707 }
1708 } catch (IOException io) {
1709 throw new ServiceException(io);
1710 }
{noformat}
only master.checkInitilized needs exception handling, move others out of the block.
ditto for next two functions
bq. DrainRegionServersResponse.Builder response = DrainRegionServersResponse.newBuilder();
Directly return DrainRegionServersResponse.getDefaultInstance() in the end.
ditto for RemoveDrainFromRegionServersResponse.
In testDrainRegionServers(), instead of manually maintaining thread,executor,future, please use admin.createTableAsync() and wait on the future.
> Put draining function through Admin API
> ---------------------------------------
>
> Key: HBASE-16010
> URL: https://issues.apache.org/jira/browse/HBASE-16010
> Project: HBase
> Issue Type: Improvement
> Reporter: Jerry He
> Assignee: Matt Warhaftig
> Priority: Minor
> Fix For: 2.0.0
>
> Attachments: HBASE-16010-v3.patch, hbase-16010-v1.patch, hbase-16010-v2.patch
>
>
> Currently, there is no Amdin API for draining function. Client has to interact directly with Zookeeper draining node to add and remove draining servers.
> For example, in draining_servers.rb:
> {code}
> zkw = org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.new(config, "draining_servers", nil)
> parentZnode = zkw.drainingZNode
> begin
> for server in servers
> node = ZKUtil.joinZNode(parentZnode, server)
> ZKUtil.createAndFailSilent(zkw, node)
> end
> ensure
> zkw.close()
> end
> {code}
> This is not good in cases like secure clusters with protected Zookeeper nodes.
> Let's put draining function through Admin API.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)