[ https://issues.apache.org/jira/browse/HBASE-21487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16777740#comment-16777740 ]
Guanghao Zhang commented on HBASE-21487: ---------------------------------------- {code:java} if (shouldCheckDescriptor) { 2653 submitProcedure(new ModifyTableProcedure(procedureExecutor.getEnvironment(), 2654 newDescriptor, latch, oldDescriptor, shouldCheckDescriptor)); 2655 } else { 2656 submitProcedure( 2657 new ModifyTableProcedure(procedureExecutor.getEnvironment(), newDescriptor, latch)); 2658 } {code} submitProcedure( new ModifyTableProcedure(procedureExecutor.getEnvironment(), newDescriptor, latch, shouldCheckDescriptor)); directly? No need to checkĀ shouldCheckDescriptor. > 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 > Assignee: Syeda Arshiya Tabreen > Priority: Major > Fix For: 2.2.0 > > Attachments: HBASE-21487.branch-2.02.patch, > HBASE-21487.branch-2.03.patch, HBASE-21487.branch-2.04.patch, > HBASE-21487.branch-2.05.patch, HBASE-21487.branch-2.patch > > > 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)