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

Toby White commented on HBASE-657:
----------------------------------

There is a related issue which occurs when a Mutation is passed in with no 
column name - a rather opaque
thrift.transport.TTransport.TTransportException: None
is generated instead of a useful message. 

The patch attached fixes this in ThriftServer.java by checking that the column 
name is not null before use.

(The patch is to be applied on top of Tim Sell's patch in HBASE-697)

> InvalidColumnNameException not passed through to Thrift interface
> -----------------------------------------------------------------
>
>                 Key: HBASE-657
>                 URL: https://issues.apache.org/jira/browse/HBASE-657
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: thrift
>    Affects Versions: 0.1.2
>            Reporter: Todd Lipcon
>            Assignee: Bryan Duxbury
>            Priority: Minor
>
> If an invalid column name is passed to the Thrift server, the 
> InvalidColumnNameException is not caught and turned into a Thrift exception. 
> Debug output:
> 08/05/29 20:34:30 DEBUG thrift.ThriftServer$HBaseHandler: get: 
> table=test_table, row=todd, col=foobar
> 08/05/29 20:34:30 DEBUG hbase.HTable: reloading table servers because: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> 08/05/29 20:34:40 DEBUG hbase.HTable: reloading table servers because: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> 08/05/29 20:34:50 DEBUG hbase.HTable: reloading table servers because: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> 08/05/29 20:35:00 DEBUG hbase.HTable: reloading table servers because: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> 08/05/29 20:35:10 DEBUG hbase.HTable: Trying to contact region server for row 
> 'todd', but failed after 5 attempts.
> Exception 1:
> org.apache.hadoop.hbase.InvalidColumnNameException: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> Exception 1:
> org.apache.hadoop.hbase.InvalidColumnNameException: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> Exception 1:
> org.apache.hadoop.hbase.InvalidColumnNameException: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)
> Exception 1:
> org.apache.hadoop.hbase.InvalidColumnNameException: 
> org.apache.hadoop.hbase.InvalidColumnNameException: foobar is missing the 
> colon family/qualifier separator
>         at 
> org.apache.hadoop.hbase.HStoreKey.getColonOffset(HStoreKey.java:335)
>         at org.apache.hadoop.hbase.HStoreKey.extractFamily(HStoreKey.java:295)
>         at org.apache.hadoop.hbase.HRegion.checkColumn(HRegion.java:1676)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1191)
>         at org.apache.hadoop.hbase.HRegion.get(HRegion.java:1154)
>         at org.apache.hadoop.hbase.HRegionServer.get(HRegionServer.java:1402)
>         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.apache.hadoop.hbase.ipc.HbaseRPC$Server.call(HbaseRPC.java:413)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:901)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to