You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "Larry McCay (JIRA)" <ji...@apache.org> on 2014/04/11 18:12:18 UTC
[jira] [Resolved] (KNOX-199) ExampleHBase.groovy fails with HBase
0.96 due to empty column qualifier REST API incompatibility
[ 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)