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/12/20 14:04:09 UTC

[jira] [Updated] (HBASE-10215) TableNotFoundException should be thrown after removing stale znode in ETH

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

rajeshbabu updated HBASE-10215:
-------------------------------

    Attachment: HBASE-10215.patch

Patch for trunk. Please review.

> TableNotFoundException should be thrown after removing stale znode in ETH
> -------------------------------------------------------------------------
>
>                 Key: HBASE-10215
>                 URL: https://issues.apache.org/jira/browse/HBASE-10215
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>    Affects Versions: 0.96.1, 0.94.14
>            Reporter: rajeshbabu
>            Assignee: rajeshbabu
>            Priority: Minor
>             Fix For: 0.98.0, 0.94.16, 0.96.2, 0.99.0
>
>         Attachments: HBASE-10215.patch
>
>
> Lets suppose master went down while creating table then znode will be left in ENABLING state. Master to recover them on restart. 
> If there are no meta entries for the table.
> While recovering the table we are checking whether table exists in meta or not, if not we are removing the znode. After removing znode we need to throw TableNotFoundException. Presently not throwing the exception so the znode will be recrated. It will be stale forever. Even on master restart we cannot delete. We cannot create the table with same name also.
> {code}
>       // Check if table exists
>       if (!MetaReader.tableExists(catalogTracker, tableName)) {
>         // retainAssignment is true only during recovery.  In normal case it is false
>         if (!this.skipTableStateCheck) {
>           throw new TableNotFoundException(tableName);
>         } 
>         try {
>           this.assignmentManager.getZKTable().removeEnablingTable(tableName, true);
>         } catch (KeeperException e) {
>           // TODO : Use HBCK to clear such nodes
>           LOG.warn("Failed to delete the ENABLING node for the table " + tableName
>               + ".  The table will remain unusable. Run HBCK to manually fix the problem.");
>         }
>       }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)