[
https://issues.apache.org/jira/browse/HBASE-21487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16697326#comment-16697326
]
Allan Yang commented on HBASE-21487:
------------------------------------
Yes, it is a problem, in 2.x, we only have ModifyTableProcedure, and the
Tabledescriptor is passed in with no lock. I think maybe we should acquire the
table exclusive lock before constructing the new table descriptor to ensure we
are using the newest version. Are you preparing a patch, [~arshiya9414]?
> Concurrent modify table ops can lead to unexpected results
> ----------------------------------------------------------
>
> Key: HBASE-21487
> URL: https://issues.apache.org/jira/browse/HBASE-21487
> Project: HBase
> Issue Type: Bug
> Affects Versions: 3.0.0, 2.0.0
> Reporter: Syeda Arshiya Tabreen
> Priority: Major
>
> Concurrent modifyTable or add/delete/modify columnFamily leads to incorrect
> result. After HBASE-18893, The behavior of add/delete/modify column family
> during concurrent operation is changed compare to branch-1.When one client
> is adding cf2 and another one cf3 .. In branch-1 final result will be
> cf1,cf2,cf3 but now either cf1,cf2 OR cf1,cf3 will be the outcome depending
> on which ModifyTableProcedure executed finally.Its because new table
> descriptor is constructed before submitting the ModifyTableProcedure in
> HMaster class and its not guarded by any lock.
> *Steps to reproduce*
> 1.Create table 't' with column family 'f1'
> 2.Client-1 and Client-2 requests to add column family 'f2' and 'f3' on table
> 't' concurrently.
> *Expected Result*
> Table should have three column families(f1,f2,f3)
> *Actual Result*
> Table 't' will have column family either (f1,f2) or (f1,f3)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)