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

Sergey Shelukhin commented on HBASE-22254:
------------------------------------------

bq. bq. More resilient off-loading; right now off-loading fails for a subset of 
regions in case of a single region failure; is never done on master restart, 
etc.
bq. Say more.
In the existing code the decom API has if-offload block that tries to move all 
the regions. The move procedure creation only seems to work for OPEN regions, 
and presumably it can also fail for some other reason; any RIT (e.g. 
opening/closing) or an error will thus terminate the loop and throw from the 
API call, only moving part of the regions; server will be marked as 
decommissioned but offloading will never be retried. I'm not sure if the API 
call should fail or not (I kept the existing behavior), but I made the 
offloading itself more resilient by trying all regions despite errors, and 
saving the flag in the existing state.

bq. Add how to invoke this new option to RN?
Hmm, interesting, RN actually refers to decommissioning servers via adding 
ZNodes manually, whereas the code in master says draining server tracker is 
deprecated; I was wondering why the latter was watching znodes while only 
master creates them, and removed that logic given the deprecation comments.
I think adding HBase shell command to call the API might make sense, let me 
look into that.

bq. We could construct the manager w/o znode?
This is unit test path only (where we have no ZK or want to init with 
handcrafted data "from ZK" after doing some state shennanigans), let me clean 
it up a bit...

bq. Yeah, adding extra server listener seems to be an argument that this be a 
facility in ServerManager rather than new Manager.
The server listener is inherited from DrainingServerTracker. 
I was thinking about keeping the class name as DrainingServerTracker :) 
I can merge into SM, but it seems like that would make the combined class too 
big... wdyt?

Will update the patch shortly, the fix to the unit test is a one-character 
change ("!" got reversed in one place)
 



> refactor and improve decommissioning logic
> ------------------------------------------
>
>                 Key: HBASE-22254
>                 URL: https://issues.apache.org/jira/browse/HBASE-22254
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Sergey Shelukhin
>            Assignee: Sergey Shelukhin
>            Priority: Major
>         Attachments: HBASE-22254.01.patch, HBASE-22254.patch
>
>
> Making some changes needed to support better decommissioning on large 
> clusters and with container mode; to test those and add clarify I moved parts 
> of decommissioning logic from HMaster, Draining tracker, and ServerManager 
> into a separate class.
> Features added/improvements:
> 1) More resilient off-loading; right now off-loading fails for a subset of 
> regions in case of a single region failure; is never done on master restart, 
> etc.
> 2) Option to kill RS after off-loading (good for container mode HBase, e.g. 
> on YARN).
> 3) Option to specify machine names only to decommission, for the API to be 
> usable for an external system that doesn't care about HBase server names, or 
> e.g. multiple RS in containers on the same node.
> 4) Option to replace existing decommissioning list instead of adding to it 
> (the same; to avoid additionally remembering what was previously sent to 
> HBase).
> 5) Tests, comments ;)



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

Reply via email to