You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "rajeshbabu (JIRA)" <ji...@apache.org> on 2013/03/31 21:35:16 UTC

[jira] [Updated] (HBASE-6469) Failure on enable/disable table will cause table state in zk to be left as enabling/disabling until master is restarted

     [ https://issues.apache.org/jira/browse/HBASE-6469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

rajeshbabu updated HBASE-6469:
------------------------------

    Attachment: HBASE-6469_retry_enable_or_disable.patch

We can handle re attempts of enable/disable with with small changes while preparing EnableTableHandler/DisableTableHandler as in patch. Just for an idea uploading it. 

Exceptions used in the patch may not. People may not accept this idea also. 

One more idea is retry internally in EnableTableHandler until all regions become online even in failures or timeouts then set ENABLED(Samething happening in DisableTableHandler. It will retry until all regions become offline and then set to table state to DISABLED).
                
> Failure on enable/disable table will cause table state in zk to be left as enabling/disabling until master is restarted
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-6469
>                 URL: https://issues.apache.org/jira/browse/HBASE-6469
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.95.0, 0.94.6
>            Reporter: Enis Soztutar
>            Assignee: rajeshbabu
>             Fix For: 0.95.0, 0.94.7
>
>         Attachments: 6469-expose-force-r3.patch, HBASE-6469_2.patch, HBASE-6469_3.patch, HBASE-6469_4.patch, HBASE-6469.patch, HBASE-6469_retry_enable_or_disable.patch
>
>
> 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