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

Jean-Daniel Cryans commented on HBASE-4741:
-------------------------------------------

bq. HBA uses this.connection.getMaster() to get to master.

Ha! I was somehow reading that you were doing the changes in HMaster, my bad. 
In this case checkTableExistence isn't needed because getTableDescriptor does 
what's needed (eg it will throw the TableNotFoundException).

Reading the code I see stuff like:

{code}
  public void modifyColumn(final byte [] tableName, HColumnDescriptor 
descriptor)
  throws IOException {
    try {
      getMaster().modifyColumn(tableName, descriptor);
    } catch (RemoteException re) {
      // Convert RE exceptions in here; client shouldn't have to deal with them,
      // at least w/ the type of exceptions that come out of this method:
      // TableNotFoundException, etc.
      throw RemoteExceptionHandler.decodeRemoteException(re);
    }
  }

{code}

So it seems that it used to be that the checks were done in the master. I would 
prefer to see the checks done over there since other clients (like asynchbase) 
would also need to implement the same checks.

Back to the patch, it's also missing addColumn.
                
> Online schema change doesn't return errors
> ------------------------------------------
>
>                 Key: HBASE-4741
>                 URL: https://issues.apache.org/jira/browse/HBASE-4741
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.92.0
>            Reporter: Jean-Daniel Cryans
>            Assignee: Ted Yu
>            Priority: Critical
>             Fix For: 0.92.0
>
>         Attachments: 4741-v2.txt, 4741-v3.txt, 4741.txt
>
>
> Still after the fun I had over in HBASE-4729, I tried to finish altering my 
> table (remove a family) since only half of it was changed so I did this:
> {quote}
> hbase(main):002:0> alter 'TestTable', NAME => 'allo', METHOD => 'delete' 
> Updating all regions with the new schema...
> 244/244 regions updated.
> Done.
> 0 row(s) in 1.2480 seconds
> {quote}
> Nice it all looks good, but over in the master log:
> {quote}
> org.apache.hadoop.hbase.InvalidFamilyOperationException: Family 'allo' does 
> not exist so cannot be deleted
>         at 
> org.apache.hadoop.hbase.master.handler.TableDeleteFamilyHandler.handleTableOperation(TableDeleteFamilyHandler.java:56)
>         at 
> org.apache.hadoop.hbase.master.handler.TableEventHandler.process(TableEventHandler.java:86)
>         at 
> org.apache.hadoop.hbase.master.HMaster.deleteColumn(HMaster.java:1011)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at 
> org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:348)
>         at 
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1242)
> {quote}
> Maybe we should do checks before launching the async task.
> Marking critical as this is a regression.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to