[
https://issues.apache.org/jira/browse/HBASE-19501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-19501:
--------------------------
Attachment: HBASE-19501.patch
Parking patch here. Can't go in until HBASE-18946 is done.
> [AMv2] Retain assignment across restarts
> ----------------------------------------
>
> Key: HBASE-19501
> URL: https://issues.apache.org/jira/browse/HBASE-19501
> Project: HBase
> Issue Type: Sub-task
> Components: Region Assignment
> Reporter: stack
> Assignee: stack
> Fix For: 2.0.0-beta-1
>
> Attachments: HBASE-19501.patch
>
>
> Working with replicas and the parent test in particular, I learned a few
> interesting things:
> # It is hard to test if we retain assignments because our little minicluster
> gives RegionServers new ports on restart foiling our means of recognizing new
> instance of a server by checking hostname+port (and ensuring the startcode is
> larger).
> # Some of our tests like the parent test depended on retaining assignment
> across restarts.
> # As said in parent issue, master used to be last to go down when we did a
> controlled cluster shutdown. We lost that when we moved to AMv2.
> # When we do a cluster shutdown, the RegionServers close down the Regions,
> not the Master as is usual in AMv2 (Master wants to do all assign ops in
> AMv2). This means that the Master is surprised when it gets notification of
> CLOSE ops that it did not initiate. Usually on CLOSE, Master updates meta
> with the CLOSE state. On cluster shutdown we are not doing this.
> # So, on restart, we read meta and we see all regions still in OPEN state so
> we think the cluster crashed down so we go and do ServerCrashProcedure. Which
> hoses our ability to retain assign.
> Some experiments:
> # I can make the Master stay up so it is last to go down
> # This makes it so we no longer spew the logs with failed transition
> messages because Master is not up to receive the CLOSE transitions.
> # I hacked in means of telling minicluster ports it should use on start;
> helps fake case of new RS instances
> # It is hard to tell the difference between a clean shutdown and a crash
> down. It is dangerous if we get the call wrong. Currently, given that we just
> let ServerCrashProcedure deal with it -- the safest option -- one experiment
> is that when it goes to assign the regions that were on the crashed server,
> rather than round robin, instead we should look and see if new instance of
> old location and if so, just give it al lthe regions. That'd retain locality.
> This seems to work. Problem is that SCP is doing assignment. Ideally balancer
> would do it.
> Let me put up a patch that retains assignment across restart (somehow).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)