[ https://issues.apache.org/jira/browse/HBASE-14017?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14613299#comment-14613299 ]
Matteo Bertozzi commented on HBASE-14017: ----------------------------------------- you are looking at the specific table implementation, try to look more at the RunQueue object alone. that acquireDelete() is a ref-count of poor people. it has nothing to do with insert/update/delete. if we implement refcount for that object you'll have an unref() == 0, instead of acquireDelete(). the fact that we have read/write lock in the table is because we have read/write operation support, and since we don't have refcount in the base RunQueue object we can just implement acquireDelete() as a tryExclusiveLock(). but the acquireDelete() has no knowledge of "delete" operation in term of "delete table". it is equivalent to a refcounted unref() == 0, how it is implemented is just a shortcut to use what we have already. > Procedure v2 - MasterProcedureQueue fix concurrency issue on table queue > deletion > --------------------------------------------------------------------------------- > > Key: HBASE-14017 > URL: https://issues.apache.org/jira/browse/HBASE-14017 > Project: HBase > Issue Type: Sub-task > Components: proc-v2 > Affects Versions: 2.0.0, 1.2.0, 1.1.1, 1.3.0 > Reporter: Matteo Bertozzi > Assignee: Matteo Bertozzi > Priority: Blocker > Fix For: 2.0.0, 1.2.0, 1.1.2 > > Attachments: HBASE-14017-v0.patch, HBASE-14017.v1-branch1.1.patch > > > [~syuanjiang] found a concurrecy issue in the procedure queue delete where we > don't have an exclusive lock before deleting the table > {noformat} > Thread 1: Create table is running - the queue is empty and wlock is false > Thread 2: markTableAsDeleted see the queue empty and wlock= false > Thread 1: tryWrite() set wlock=true; too late > Thread 2: delete the queue > Thread 1: never able to release the lock - NPE when trying to get the queue > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)