hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matteo Bertozzi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14017) Procedure v2 - MasterProcedureQueue fix concurrency issue on table queue deletion
Date Fri, 03 Jul 2015 16:37:04 GMT

    [ 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
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

View raw message