[ 
https://issues.apache.org/jira/browse/HBASE-11290?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Virag Kothari updated HBASE-11290:
----------------------------------
    Attachment: HBASE-11290-0.98.patch

The attached patch for 0.98 does the following:
- Uses a concurrent cache to implement region locks
- All Hashmap converted to CHM, Treemap to ConcurrentSkipListMap.
- For RegionStates, setters updating multiple collections keyed by region names 
will acquire region locks. (ServerHoldings map is keyed by serverName, but it 
didn't seem necessary to obtain server locks).
- Getters can directly use CHM or ConcurrentSkipListMap without additional 
locks.
- RegionPlans TreeMap in AM also converted to ConcurrentSkipListMap

WIP:
- Need a way to remove entries from Cache. Was looking at Guava's CacheBuilder 
(allows soft values) yest. Can that help?
- Patch for trunk

Please review. Thanks!


> Unlock RegionStates
> -------------------
>
>                 Key: HBASE-11290
>                 URL: https://issues.apache.org/jira/browse/HBASE-11290
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Francis Liu
>            Assignee: Virag Kothari
>         Attachments: HBASE-11290-0.98.patch, HBASE-11290.draft.patch
>
>
> Even though RegionStates is a highly accessed data structure in HMaster. Most 
> of it's methods are synchronized. Which limits concurrency. Even simply 
> making some of the getters non-synchronized by using concurrent data 
> structures has helped with region assignments. We can go as simple as this 
> approach or create locks per region or a bucket lock per region bucket.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to