[
https://issues.apache.org/jira/browse/HBASE-3789?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jean-Daniel Cryans updated HBASE-3789:
--------------------------------------
Attachment: HBASE-3789-v2-0.90.patch
New cleaned up patch that does what I listed in the previous comment, except
the splitting part since this is currently a patch for 0.90
My testing shows that creating the znodes when closing in the master is slower
since, duh, it's not done in parallel by the region servers. The patch is still
much faster than the current master and people tweaking the number of handlers
higher should see good speedups. I haven't seen any bug with this patch.
Up next is more testing and porting to trunk with the handling of splits.
> Cleanup the locking contention in the master
> --------------------------------------------
>
> Key: HBASE-3789
> URL: https://issues.apache.org/jira/browse/HBASE-3789
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 0.90.2
> Reporter: Jean-Daniel Cryans
> Assignee: Jean-Daniel Cryans
> Priority: Blocker
> Fix For: 0.92.0
>
> Attachments: HBASE-3789-v2-0.90.patch, HBASE-3789.patch
>
>
> The new master uses a lot of synchronized blocks to be safe, but it only
> takes a few jstacks to see that there's multiple layers of lock contention
> when a bunch of regions are moving (like when the balancer runs). The main
> culprits are regionInTransition in AssignmentManager, ZKAssign that uses
> ZKW.getZNnodes (basically another set of region in transitions), and locking
> at the RegionState level.
> My understanding is that even tho we have multiple threads to handle regions
> in transition, everything is actually serialized. Most of the time, lock
> holders are talking to ZK or a region server, which can take a few
> milliseconds.
> A simple example is when AssignmentManager wants to update the timers for all
> the regions on a RS, it will usually be waiting on another thread that's
> holding the lock while talking to ZK.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira