hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Hsieh (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7365) Safer table creation and deletion using .tmp dir
Date Thu, 07 Feb 2013 14:05:14 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13573498#comment-13573498
] 

Jonathan Hsieh commented on HBASE-7365:
---------------------------------------

In the current implementation the clone call waits until after the newly created table isTableEnabled.
 However there is another state (apparently orthogonal) that a newly created table is assumed
to be -- isTableAvailable (all regions assigned).  The logic for checking after table creation
and after clone creation are slightly different -- creation  does the equivalent of isTableAvailable
but clone does not check this availability condition.  

This causes flaky failures in tests that quickly try to use/delete a newly cloned table.

TestRestoreSnapshotFromClient#testCloneSnapshot
TestRestoreFlushSnapshotFromCleitn#testCloneSnapshot

I believe there also are race conditions because of the postTableCreateHandler corpco and
postTableDeleteHandler coproc hooks.
                
> Safer table creation and deletion using .tmp dir
> ------------------------------------------------
>
>                 Key: HBASE-7365
>                 URL: https://issues.apache.org/jira/browse/HBASE-7365
>             Project: HBase
>          Issue Type: Improvement
>          Components: master
>            Reporter: Matteo Bertozzi
>            Assignee: Matteo Bertozzi
>             Fix For: 0.96.0
>
>         Attachments: 7365-v4.patch, HBASE-7365-v0.patch, HBASE-7365-v1.patch, HBASE-7365-v2.patch,
HBASE-7365-v3.patch
>
>
> Currently tables are created in the root directory, and the removal works on the root
directory.
> Change the code to use a /hbase/.tmp directory to make the creation and removal a bit
safer
> Table Creation steps
>  * Create the table descriptor (table folder, in /hbase/.tmp/)
>  * Create the table regions (always in temp)
>  * Move the table from temp to the root folder
>  * Add the regions to meta
>  * Trigger assignment
>  * Set enable flag in ZooKeeper
> Table Deletion steps
>  * Wait for regions in transition
>  * Remove regions from meta (use bulk delete)
>  * Move the table in /hbase/.tmp
>  * Remove the table from the descriptor cache
>  * Remove table from zookeeper
>  * Archive the table
> The main changes in the current code are:
>  * Writing to /hbase/.tmp and then rename
>  * using bulk delete in DeletionTableHandler

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message