Description
This isn't really a functional bug, just more about erroring out cleanly.
In the future, everyone should check and catch exceptions. Meaningful error messages should be shown instead of stack traces. For debugging purposes, 'hbase shell -d' can be used which outputs a detailed stack trace.
- the shell commands assign, move, unassign and merge_region can throw the following error if given an invalid argument:
hbase(main):032:0> unassign 'adsfdsafdsa' ERROR: org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.hbase.UnknownRegionException: adsfdsafdsa at org.apache.hadoop.hbase.master.HMaster.unassign(HMaster.java:1562) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364) at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1336) Here is some help for this command: Unassign a region. Unassign will close region in current location and then reopen it again. Pass 'true' to force the unassignment ('force' will clear all in-memory state in master before the reassign. If results in double assignment use hbck -fix to resolve. To be used by experts). Use with caution. For expert use only. Examples: hbase> unassign 'REGIONNAME' hbase> unassign 'REGIONNAME', true hbase(main):033:0>
- drop_namespace, describe_namespace throw stack trace too.
hbase(main):002:0> drop_namespace "SDf" ERROR: org.apache.hadoop.hbase.NamespaceNotFoundException: SDf at org.apache.hadoop.hbase.master.TableNamespaceManager.remove(TableNamespaceManager.java:175) at org.apache.hadoop.hbase.master.HMaster.deleteNamespace(HMaster.java:2119) at org.apache.hadoop.hbase.master.MasterRpcServices.deleteNamespace(MasterRpcServices.java:430) at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:44279) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107) at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130) at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107) at java.lang.Thread.run(Thread.java:745) Here is some help for this command: Drop the named namespace. The namespace must be empty.
- fix error message in close_region
hbase(main):007:0> close_region "sdf" ERROR: sdf
- delete_snapshot throws exception too.
ERROR: org.apache.hadoop.hbase.snapshot.SnapshotDoesNotExistException: Snapshot 'sdf' doesn't exist on the filesystem at org.apache.hadoop.hbase.master.snapshot.SnapshotManager.deleteSnapshot(SnapshotManager.java:270) at org.apache.hadoop.hbase.master.MasterRpcServices.deleteSnapshot(MasterRpcServices.java:452) at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:44261) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107) at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130) at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107) at java.lang.Thread.run(Thread.java:745) Here is some help for this command: Delete a specified snapshot. Examples: hbase> delete_snapshot 'snapshotName',
other commands, when given bogus arguments, tend to fail cleanly and not leave stacktrace in the output.
Attachments
Attachments
Issue Links
- is related to
-
HBASE-14254 Wrong error message when throwing NamespaceNotFoundException in shell
- Closed