[
https://issues.apache.org/jira/browse/HBASE-20411?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-20411:
--------------------------
Status: Patch Available (was: Open)
.001
{code}
Change the synchronize across three volatiles incrementing our memory
sizings. Instead:
* Make MemStoreSize immutable. Create a new instance on every
increment.
* Undo MemStoreSizing being an instance of MemStoreSize; instead it
has-a.
* Make two MemStoreSizing implementations; one thread-safe, the other
not.
* Use an AtomicReference#checkAndPut (lockless) where concurrent
updates
* Otherwise, use unsynchronized accounting.
TODO: Conservative using thread-safe accounting when unclear. Fix.
TODO: Use this technique accounting at the global level too.
A
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/LocalMemStoreSizing.java
Non-thread-safe memory size accounting.
M
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSize.java
Make MemStoreSize immutable, just a container for three longs.
M
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizing.java
Make this an Interface. Implementations are a thread-safe instance and
a non-thread-safe version.
A
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.java
Thread-safe version.
{code}
> Ameliorate MutableSegment synchronize
> -------------------------------------
>
> Key: HBASE-20411
> URL: https://issues.apache.org/jira/browse/HBASE-20411
> Project: HBase
> Issue Type: Bug
> Reporter: stack
> Priority: Major
> Attachments: 41901.lock.svg, HBASE-20411.branch-2.0.001.patch
>
>
> This item is migrated from HBASE-20236 so it gets dedicated issue.
> Let me upload evidence that has this synchronize as a stake in our write-time
> perf. I'll migrate the patch I posted with updates that come of comments
> posted by [~mdrob] on the HBASE-20236 issue.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)