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)