[
https://issues.apache.org/jira/browse/KNOX-199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kevin Minder updated KNOX-199:
------------------------------
Description:
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
was:
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()
// 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
> 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.3.1
>
> 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.1#6144)