[
https://issues.apache.org/jira/browse/HBASE-15297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sean Busbey updated HBASE-15297:
--------------------------------
Resolution: Fixed
Hadoop Flags: Incompatible change
Fix Version/s: (was: 1.2.4)
Release Note:
The security admin instance available within the HBase shell now returns
"false" from the namespace_exists? method for non-existent namespaces rather
than raising a wrapped NamespaceNotFoundException.
As a side effect, when the "grant" and "revoke" commands in the HBase shell are
invoked with a non-existent namespace the resulting error message now properly
refers to said namespace rather than to the user.
Status: Resolved (was: Patch Available)
I only brought this back to the branches for 1.3+, because the
{{namespace_exists?}} method is exposed in the shell. That means altering it
breaks operational compatibility, which we don't do in maintenance releases.
here's an example of the behavior before the change:
{code}
hbase(main):001:0> @shell.hbase_security_admin.namespace_exists? "hbase"
=> true
hbase(main):002:0> @shell.hbase_security_admin.namespace_exists? "foobar"
NativeException: org.apache.hadoop.hbase.NamespaceNotFoundException:
org.apache.hadoop.hbase.NamespaceNotFoundException: foobar
at
org.apache.hadoop.hbase.master.HMaster.getNamespaceDescriptor(HMaster.java:2549)
at
org.apache.hadoop.hbase.master.MasterRpcServices.getNamespaceDescriptor(MasterRpcServices.java:817)
at
org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:55732)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2170)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:109)
at
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:185)
at
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:165)
{code}
Now, naturally, the second call returns a proper {{false}} which will break any
downstream folks expecting an exception. Let me know if the release note needs
more details to properly warn folks who upgrade.
> error message is wrong when a wrong namspace is specified in grant in hbase
> shell
> ---------------------------------------------------------------------------------
>
> Key: HBASE-15297
> URL: https://issues.apache.org/jira/browse/HBASE-15297
> Project: HBase
> Issue Type: Bug
> Components: shell
> Affects Versions: 2.0.0, 1.2.0
> Reporter: Xiang Li
> Assignee: Umesh Agashe
> Priority: Minor
> Fix For: 2.0.0, 1.3.0, 1.4.0
>
> Attachments: HBASE-15297.v1.patch
>
>
> In HBase shell, specify a non-existing namespace in "grant" command, such as
> {code}
> hbase(main):001:0> grant 'a1', 'R', '@aaa' <--- there is no namespace
> called "aaa"
> {code}
> The error message issued is not correct
> {code}
> ERROR: Unknown namespace a1!
> {code}
> a1 is the user name, not the namespace.
> The following error message would be better
> {code}
> ERROR: Unknown namespace aaa!
> {code}
> or
> {code}
> Can't find a namespace: aaa
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)