[ 
https://issues.apache.org/jira/browse/KNOX-199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Larry McCay resolved KNOX-199.
------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 0.3.1)
                   0.4.0

> ExampleHBase.groovy fails with HBase 0.96 due to empty column qualifier REST 
> API incompatibility
> ------------------------------------------------------------------------------------------------
>
>                 Key: KNOX-199
>                 URL: https://issues.apache.org/jira/browse/KNOX-199
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: ClientDSL
>    Affects Versions: 0.3.0
>         Environment: Knox 0.3.0, Sandbox 2.0 GA (HBase 0.96)
>            Reporter: Kevin Minder
>            Assignee: Vladimir Tkhir
>            Priority: Critical
>             Fix For: 0.4.0
>
>         Attachments: KNOX-199.patch
>
>
> When running the samples/ExampleHBase.groovy Knox Client DSL script, an 
> exception is produced on the client side.  This is due to an incompatibility 
> between Knox 0.3.0 Client DSL and a change in HBase 0.96.  The result is that 
> the Knox Client DSL cannot be used to access HBase operations that involve 
> empty column qualifiers.  This only affects the Knox Client DSL.  The HBase 
> REST API can still be used via the Knox Gateway for both HBase 0.95 and 0.96.
> // This Client DSL command will fail with Knox 0.3.0 Client DSL and HBase 
> 0.96.  It will work with HBase 0.95.
> HBase.session(session).table("table1").row("row_id_1").store().column("family1",
>  null, "fam_value1").now()
> // It may also be possible in some cases to work around this problem by 
> adding an extra ":" to the column family parameter
> HBase.session(session).table("table1").row("row_id_1").store().column("family1:",
>  null, "fam_value1").now()
>  
> // This Client DSL command will work with both HBase 0.95 and HBase 0.96.
> HBase.session(session).table("table1").row("row_id_1").store().column("family1",
>  "col1", "col_value1").now()
> The exception produced on the client side is shown below:
> Inserting data into table...
> Caught: org.apache.hadoop.gateway.shell.HadoopException: 
> org.apache.hadoop.gateway.shell.ErrorResponse: HTTP/1.1 400 Bad Request
> org.apache.hadoop.gateway.shell.HadoopException: 
> org.apache.hadoop.gateway.shell.ErrorResponse: HTTP/1.1 400 Bad Request
>     at 
> org.apache.hadoop.gateway.shell.AbstractRequest.now(AbstractRequest.java:72)
>     at org.apache.hadoop.gateway.shell.AbstractRequest$now.call(Unknown 
> Source)
>     at 
> org.apache.hadoop.gateway.shell.hbase.ExampleHBase.run(ExampleHBase.groovy:81)
>     at org.apache.hadoop.gateway.shell.Shell.main(Shell.java:40)
>     at 
> org.apache.hadoop.gateway.launcher.Invoker.invokeMainMethod(Invoker.java:64)
>     at org.apache.hadoop.gateway.launcher.Invoker.invoke(Invoker.java:37)
>     at org.apache.hadoop.gateway.launcher.Command.run(Command.java:101)
>     at org.apache.hadoop.gateway.launcher.Launcher.run(Launcher.java:70)
>     at org.apache.hadoop.gateway.launcher.Launcher.main(Launcher.java:49)
> Caused by: org.apache.hadoop.gateway.shell.ErrorResponse: HTTP/1.1 400 Bad 
> Request
>     at org.apache.hadoop.gateway.shell.Hadoop.executeNow(Hadoop.java:107)
>     at 
> org.apache.hadoop.gateway.shell.AbstractRequest.execute(AbstractRequest.java:47)
>     at 
> org.apache.hadoop.gateway.shell.hbase.table.row.StoreRow$Request.access$400(StoreRow.java:47)
>     at 
> org.apache.hadoop.gateway.shell.hbase.table.row.StoreRow$Request$1.call(StoreRow.java:116)
>     at 
> org.apache.hadoop.gateway.shell.hbase.table.row.StoreRow$Request$1.call(StoreRow.java:77)
>     at 
> org.apache.hadoop.gateway.shell.AbstractRequest.now(AbstractRequest.java:70)
>     ... 8 more 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to