Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-14119

Show meaningful error messages instead of stack traces in hbase shell commands. Fixing few commands in this jira.

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.2.0, 1.1.2, 2.0.0
    • Component/s: None
    • Labels:
      None

      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

        1. HBASE-14119.patch
          2 kB
          Apekshit Sharma
        2. HBASE-14119-branch-1.patch
          2 kB
          Apekshit Sharma

          Issue Links

            Activity

              People

              • Assignee:
                appy Apekshit Sharma
                Reporter:
                appy Apekshit Sharma
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: