[ https://issues.apache.org/jira/browse/HBASE-5088?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13181178#comment-13181178 ]
Lars Hofhansl edited comment on HBASE-5088 at 1/6/12 7:24 AM: -------------------------------------------------------------- Here's a patch for sync object approach. It uses the internalMap itself to synchronize. When a new SoftValueSortedMap is created via {head|tail|sub}Map the parent's sync object is passed to the newly created map. This way no memory is wasted as the {head|tail|sub}map hold a reference to their parents anyway. was (Author: lhofhansl): Here's a patch for sync object approach. It uses the internalMap itself to synchronize. When a new SoftValueSortedMap is created via {head|tail|sub}Map the parent's sync object is passed to the newly created map. This way to more memory is wasted as the {head|tail|sub}map hold a reference to their parents anyway. > A concurrency issue on SoftValueSortedMap > ----------------------------------------- > > Key: HBASE-5088 > URL: https://issues.apache.org/jira/browse/HBASE-5088 > Project: HBase > Issue Type: Bug > Components: client > Affects Versions: 0.90.4, 0.94.0 > Reporter: Jieshan Bean > Assignee: Jieshan Bean > Priority: Critical > Fix For: 0.92.0 > > Attachments: 5088-syncObj.txt, 5088-useMapInterfaces.txt, > 5088.generics.txt, HBase-5088-90.patch, HBase-5088-trunk.patch, > HBase5088-90-replaceSoftValueSortedMap.patch, > HBase5088-90-replaceTreeMap.patch, HBase5088-trunk-replaceTreeMap.patch, > HBase5088Reproduce.java, PerformanceTestResults.png > > > SoftValueSortedMap is backed by a TreeMap. All the methods in this class are > synchronized. If we use this method to add/delete elements, it's ok. > But in HConnectionManager#getCachedLocation, it use headMap to get a view > from SoftValueSortedMap#internalMap. Once we operate > on this view map(like add/delete) in other threads, a concurrency issue may > occur. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira