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-6469) Failure on enable/disable table will cause table state in zk to be left as enabling/disabling until master is restart
Date Tue, 04 Dec 2012 03:09:59 GMT

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

Jonathan Hsieh commented on HBASE-6469:
---------------------------------------

[~ndimiduk] Give some more thought, based on what I've been working on recently, doing option
3 is a good stopgap, but only exposes a way to "fix" the problem when it happens but I don't
think it fundamentally fix the problem.  

I think the right way would essentially do something like 2pc where everyone would agree that
they are enabling/disabling logging this decision, and then the master would "commit" the
new table state.  This commit would be logged, so that if any rs/master failed along the way,
when they be able to recover.  I'm actually thinking this logging state can be held in META
as extra columns associated with each region.  The overall table state would either need to
be held in a special meta row (maybe the first?) or in hdfs. 
                
> Failure on enable/disable table will cause table state in zk to be left as enabling/disabling
until master is restart
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-6469
>                 URL: https://issues.apache.org/jira/browse/HBASE-6469
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.94.2, 0.96.0
>            Reporter: Enis Soztutar
>            Assignee: Nick Dimiduk
>             Fix For: 0.96.0, 0.94.4
>
>
> In Enable/DisableTableHandler code, if something goes wrong in handling, the table state
in zk is left as ENABLING / DISABLING. After that we cannot force any more action from the
API or CLI, and the only recovery path is restarting the master. 
> {code}
>     if (done) {
>       // Flip the table to enabled.
>       this.assignmentManager.getZKTable().setEnabledTable(
>         this.tableNameStr);
>       LOG.info("Table '" + this.tableNameStr
>       + "' was successfully enabled. Status: done=" + done);
>     } else {
>       LOG.warn("Table '" + this.tableNameStr
>       + "' wasn't successfully enabled. Status: done=" + done);
>     }
> {code}
> Here, if done is false, the table state is not changed. There is also no way to set skipTableStateCheck
from cli / api. 
> We have run into this issue a couple of times before. 

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