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

Gabor Bota updated HDFS-13727:
------------------------------
    Attachment: HDFS-13727.001.patch

> Log full stack trace if DiskBalancer exits with an unhandled exception
> ----------------------------------------------------------------------
>
>                 Key: HDFS-13727
>                 URL: https://issues.apache.org/jira/browse/HDFS-13727
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: diskbalancer
>    Affects Versions: 3.0.3
>            Reporter: Stephen O'Donnell
>            Assignee: Gabor Bota
>            Priority: Minor
>         Attachments: HDFS-13727.001.patch
>
>
> In HDFS-13175 it was discovered that when a DN reports the usage on a volume 
> to be greater than the volume capacity, the disk balancer will fail with an 
> unhelpful error:
> {code}
> $ hdfs diskbalancer -report -top 5
> 18/06/11 10:19:43 INFO command.Command: Processing report command
> 18/06/11 10:19:44 INFO balancer.KeyManager: Block token params received from 
> NN: update interval=10hrs, 0sec, token lifetime=10hrs, 0sec
> 18/06/11 10:19:44 INFO block.BlockTokenSecretManager: Setting block keys
> 18/06/11 10:19:44 INFO balancer.KeyManager: Update block keys every 2hrs, 
> 30mins, 0sec
> 18/06/11 10:19:44 ERROR tools.DiskBalancerCLI: 
> java.lang.IllegalArgumentException
> {code}
> In HDFS-13175, a change was made to include more details in the exception 
> name,  so after the change the code is:
> {code}
>   public void setUsed(long dfsUsedSpace) {
>     Preconditions.checkArgument(dfsUsedSpace < this.getCapacity(),
>         "DiskBalancerVolume.setUsed: dfsUsedSpace(%s) < capacity(%s)",
>         dfsUsedSpace, getCapacity());
>     this.used = dfsUsedSpace;
>   }
> {code}
> There may however be other scenarios that cause the balancer to exit with an 
> unhandled exception, and it would be helpful if the tool logged out the full 
> stack trace on error rather than just the exception name.
> In DiskBalancerCLI.java, the relevant code is:
> {code}
>   public static void main(String[] argv) throws Exception {
>     DiskBalancerCLI shell = new DiskBalancerCLI(new HdfsConfiguration());
>     int res = 0;
>     try {
>       res = ToolRunner.run(shell, argv);
>     } catch (Exception ex) {
>       LOG.error(ex.toString());
>       res = 1;
>     }
>     System.exit(res);
>   }
> {code}
> We should change the error logged in the exception block to log out the full 
> stack to give more information on all unhandled errors, eg:
> {code}
> LOG.error(ex.toString(), ex);
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to