hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean-Daniel Cryans (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-4741) Online schema change doesn't return errors
Date Thu, 03 Nov 2011 22:55:32 GMT

    [ 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:

  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);


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


View raw message