You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Xiang Li (JIRA)" <ji...@apache.org> on 2019/02/15 17:54:00 UTC
[jira] [Comment Edited] (HBASE-21866) Do not move the table to null
rsgroup when creating an existing table
[ https://issues.apache.org/jira/browse/HBASE-21866?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16769546#comment-16769546 ]
Xiang Li edited comment on HBASE-21866 at 2/15/19 5:53 PM:
-----------------------------------------------------------
Hi [~xucang] I uploaded patch v003 to give a check by #hasException() before calling #getException().
But after I read the context, I think that might not be needed:
CreateTableProcedure#executeFromState() has the following code:
{code:java}
case CREATE_TABLE_PRE_OPERATION:
// Verify if we can create the table
boolean exists = !prepareCreate(env);
releaseSyncLatch();
if (exists) {
assert isFailed() : "the delete should have an exception here";
return Flow.NO_MORE_STATE;
}
{code}
The assert will fail if prepareCreate() returns false but does not call setFailure() in it. So when doing roll-back, setFailure() has been called before, and an Exception has been new-ed and set to exception. Or someone bypasses setFailure() and set state to FAILED directly...
was (Author: water):
Hi [~xucang] I uploaded patch v003 to give a check by #hasException() before calling #getException().
But after I read the context, I think that might not be needed:
CreateTableProcedure#executeFromState() has the following code:
{code:java}
case CREATE_TABLE_PRE_OPERATION:
// Verify if we can create the table
boolean exists = !prepareCreate(env);
releaseSyncLatch();
if (exists) {
assert isFailed() : "the delete should have an exception here";
return Flow.NO_MORE_STATE;
}
{code}
The assert will fail if prepareCreate() returns false but does not call setFailure() in it. So when doing roll-back, setFailure() has been called before, and an Exception has been new-ed and set to exception. Or someone bypasses setFailure() and set state to FAILED directly...
> Do not move the table to null rsgroup when creating an existing table
> ---------------------------------------------------------------------
>
> Key: HBASE-21866
> URL: https://issues.apache.org/jira/browse/HBASE-21866
> Project: HBase
> Issue Type: Bug
> Components: proc-v2, rsgroup
> Reporter: Xiang Li
> Assignee: Xiang Li
> Priority: Major
> Attachments: HBASE-21866.master.000.patch, HBASE-21866.master.001.patch, HBASE-21866.master.002.patch
>
>
> By using the latest HBase master branch, the bug could be re-produced as:
> # create 't1', 'cf1'
> # create 't1', 'cf1'
> The following message is logged into HMaster's log:
> {code}
> INFO [PEWorker-12] rsgroup.RSGroupAdminServer: Moving table t1 to RSGroup null
> {code}
> This is a wrong action and instead, we should keep t1 as where it originally is.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)