[
https://issues.apache.org/jira/browse/HBASE-8387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
cuijianwei updated HBASE-8387:
------------------------------
Attachment: 8387-trunk-v1.txt
> Fix the concurrent put error of PoolMap
> ---------------------------------------
>
> Key: HBASE-8387
> URL: https://issues.apache.org/jira/browse/HBASE-8387
> Project: HBase
> Issue Type: Bug
> Components: Client
> Affects Versions: 0.98.0
> Reporter: cuijianwei
> Attachments: 8387-trunk-v1.txt
>
>
> As 'HBASE-6651' described, there may be risks when invoking
> 'HTable.closeTablePool' and 'HTable.getTable' concurrently because PoolMap
> is not thread safe. The updates have not been committed to trunk. Among these
> concurrent risks, I think it may be more serious to invoke 'HTable.getTable'
> concurrently, which describes as "For example PoolMap.put() calles
> ConcurrentMap.get() and calles ConcurrentMap.put(). If other threads add a
> new instance to the concurent map in the middle of the calls, the new
> instance might be dropped." in 'HBASE-6651'. Applications tend to invoke
> 'HTable.getTable' concurrently in multi-thread environments, if 'autoFlush'
> of HTable is set to false and HTable is dropped because the concurrently
> invoking HTable.getTable, the written data buffered in dropped HTable can't
> be sent to region servers. I think this problem is more serious, can we fix
> this before 'HBASE-6651' committing to trunk? I update the 'put' method of
> PooledMap to avoid this risk and generate a patch from trunk.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira