[ https://issues.apache.org/jira/browse/HBASE-13903?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-13903: -------------------------- Fix Version/s: (was: 1.5.0) (was: 2.0.0) > Speedup IdLock > -------------- > > Key: HBASE-13903 > URL: https://issues.apache.org/jira/browse/HBASE-13903 > Project: HBase > Issue Type: Improvement > Components: regionserver > Affects Versions: 2.0.0, 1.0.1, 1.1.0, 0.98.13 > Reporter: Matteo Bertozzi > Priority: Minor > Attachments: HBASE-13903-v0.patch, IdLockPerf.java > > > while testing the read path, I ended up with the profiler showing a lot of > time spent in IdLock. > The IdLock is used by the HFileReader and the BucketCache, so you'll see a > lot of it when you have an hotspot on a hfile. > we end up locked by that synchronized() and with too many calls to > map.putIfAbsent() > {code} > public Entry getLockEntry(long id) throws IOException { > while ((existing = map.putIfAbsent(entry.id, entry)) != null) { > synchronized (existing) { > ... > } > // If the entry is not locked, it might already be deleted from the > // map, so we cannot return it. We need to get our entry into the map > // or get someone else's locked entry. > } > } > public void releaseLockEntry(Entry entry) { > synchronized (entry) { > ... > } > } > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)