hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ashish Singhi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15433) SnapshotManager#restoreSnapshot not update table and region count quota correctly when encountering exception
Date Mon, 14 Mar 2016 06:27:33 GMT

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

Ashish Singhi commented on HBASE-15433:

OK. Now I understood.
When QEE is thrown we will still end up in updating the region quota which is not really required,
may be we can avoid that.

// update region quota after restore if updatedRegionCount is smaller 
740	        if (currentRegionCount > 0 && currentRegionCount > updatedRegionCount)
741	          checkAndUpdateNamespaceRegionQuota(updatedRegionCount, tableName);
742	        }
If this throws exception then there will be another issue, because now the snapshot has been
successfully restored but in the catch clause we are updating the table region count in namespace

Also suggest to rename currentRegionCount to tableRegionCount and updatedRegionCount to snapshotRegionCount
for better understanding. Please add more comments like why are we doing this way. 

> SnapshotManager#restoreSnapshot not update table and region count quota correctly when
encountering exception
> -------------------------------------------------------------------------------------------------------------
>                 Key: HBASE-15433
>                 URL: https://issues.apache.org/jira/browse/HBASE-15433
>             Project: HBase
>          Issue Type: Bug
>          Components: snapshots
>    Affects Versions: 2.0.0
>            Reporter: Jianwei Cui
>         Attachments: HBASE-15433-trunk-v1.patch, HBASE-15433-trunk-v2.patch, HBASE-15433-trunk.patch
> In SnapshotManager#restoreSnapshot, the table and region quota will be checked and updated
> {code}
>       try {
>         // Table already exist. Check and update the region quota for this table namespace
>         checkAndUpdateNamespaceRegionQuota(manifest, tableName);
>         restoreSnapshot(snapshot, snapshotTableDesc);
>       } catch (IOException e) {
>         this.master.getMasterQuotaManager().removeTableFromNamespaceQuota(tableName);
>         LOG.error("Exception occurred while restoring the snapshot " + snapshot.getName()
>             + " as table " + tableName.getNameAsString(), e);
>         throw e;
>       }
> {code}
> The 'checkAndUpdateNamespaceRegionQuota' will fail if regions in the snapshot make the
region count quota exceeded, then, the table will be removed in the 'catch' block. This will
make the current table count and region count decrease, following table creation or region
split will succeed even if the actual quota is exceeded.

This message was sent by Atlassian JIRA

View raw message