[
https://issues.apache.org/jira/browse/HBASE-16233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15378926#comment-15378926
]
Hudson commented on HBASE-16233:
--------------------------------
FAILURE: Integrated in HBase-Trunk_matrix #1231 (See
[https://builds.apache.org/job/HBase-Trunk_matrix/1231/])
HBASE-16233 Procedure V2: Support acquire/release shared table lock
(syuanjiangdev: rev 28d8609e5de62de78b6ab7570c7fea2c8f78a856)
*
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java
*
hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
> Procedure V2: Support acquire/release shared table lock concurrently
> --------------------------------------------------------------------
>
> Key: HBASE-16233
> URL: https://issues.apache.org/jira/browse/HBASE-16233
> Project: HBase
> Issue Type: Sub-task
> Components: proc-v2
> Reporter: Stephen Yuan Jiang
> Assignee: Stephen Yuan Jiang
> Fix For: 2.0.0
>
> Attachments: HBASE-16233.v1-master.patch
>
>
> {{MasterProcedureScheduler.TableQueue}} class only has one single instance of
> TableLock ({{private TableLock tableLock = null;}}) to track exclusive/shared
> table lock from TableLockManager.
> When multiple shared lock request comes, the later shared lock request would
> overwrite the lock acquired from earlier shared lock request, and hence, we
> will get some weird error when the second or later release lock request
> comes, because we lose track of the lock.
> The issue can be reproduced in the unit test of HBASE-14552. [~mbertozzi]
> also comes up with a UT without using any real procedure to repro the problem:
> {code}
> @Test
> public void testSchedWithZkLock() throws Exception {
> MiniZooKeeperCluster zkCluster = new MiniZooKeeperCluster(conf);
> int zkPort = zkCluster.startup(new File("/tmp/test-zk"));
> Thread.sleep(10000);
> conf.set("hbase.zookeeper.quorum", "localhost:" + zkPort);
> ZooKeeperWatcher zkw = new ZooKeeperWatcher(conf, "testSchedWithZkLock",
> null, false);
> queue = new MasterProcedureScheduler(conf,
> TableLockManager.createTableLockManager(
> conf, zkw, ServerName.valueOf("localhost", 12345, 1)));
> final TableName tableName = TableName.valueOf("testtb");
> TestTableProcedure procA = new TestTableProcedure(1, tableName,
> TableProcedureInterface.TableOperationType.READ);
> TestTableProcedure procB = new TestTableProcedure(2, tableName,
> TableProcedureInterface.TableOperationType.READ);
> assertTrue(queue.tryAcquireTableSharedLock(procA, tableName));
> assertTrue(queue.tryAcquireTableSharedLock(procB, tableName));
> queue.releaseTableSharedLock(procA, tableName);
> queue.releaseTableSharedLock(procB, tableName);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)