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

Apekshit Sharma updated HBASE-14119:
------------------------------------
    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:
{noformat}

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> 
{noformat}

* drop_namespace, describe_namespace throw stack trace too.
{noformat}
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.
{noformat}

* fix error message in close_region
{noformat}
hbase(main):007:0> close_region "sdf"

ERROR: sdf
{noformat}

* delete_snapshot throws exception too.
{noformat}
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',
{noformat}

other commands, when given bogus arguments, tend to fail cleanly and not leave 
stacktrace in the output.

  was:
This isn't really a functional bug, just more about erroring out cleanly.

* the shell commands assign, move, unassign and merge_region can throw the 
following error if given an invalid argument:
{noformat}

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> 
{noformat}

* drop_namespace, describe_namespace throw stack trace too.
{noformat}
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.
{noformat}

* fix error message in close_region
{noformat}
hbase(main):007:0> close_region "sdf"

ERROR: sdf
{noformat}

* delete_snapshot throws exception too.
{noformat}
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',
{noformat}

other commands, when given bogus arguments, tend to fail cleanly and not leave 
stacktrace in the output.


> Show meaningful error messages instead of stack traces in hbase shell 
> commands. Fixing few commands in this jira.
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-14119
>                 URL: https://issues.apache.org/jira/browse/HBASE-14119
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Apekshit Sharma
>            Assignee: Apekshit Sharma
>            Priority: Minor
>         Attachments: HBASE-14119.patch
>
>
> 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:
> {noformat}
> 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> 
> {noformat}
> * drop_namespace, describe_namespace throw stack trace too.
> {noformat}
> 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.
> {noformat}
> * fix error message in close_region
> {noformat}
> hbase(main):007:0> close_region "sdf"
> ERROR: sdf
> {noformat}
> * delete_snapshot throws exception too.
> {noformat}
> 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',
> {noformat}
> other commands, when given bogus arguments, tend to fail cleanly and not 
> leave stacktrace in the output.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to