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

Suhan Mao updated HDFS-12416:
-----------------------------
    Description: 
In BlockPlacementPolicyDefault.chooseRandom method.
The code are in below structure:
{code:java}
StringBuilder builder = null;
    if (LOG.isDebugEnabled()) {
      builder = debugLoggingBuilder.get();
      builder.setLength(0);
      builder.append("[");
    }
while(numOfReplicas > 0){
.............
chooseDataNode(scope, excludedNodes)
.............
if (LOG.isDebugEnabled()) {
        builder.append("\nNode ").append(NodeBase.getPath(chosenNode))
            .append(" [");
      }
}
{code}

There's a possibility that the loglevel is INFO before entering while loop, but 
the loglevel is changed to DEBUG inside the loop through web UI.
In that case, builder is not initialized in the beginning and 
NullPointerException will throw and this will cause NN exiting.

  was:
In BlockPlacementPolicyDefault.chooseRandom method.
The code are in below structure:
{code:java}
StringBuilder builder = null;
    if (LOG.isDebugEnabled()) {
      builder = debugLoggingBuilder.get();
      builder.setLength(0);
      builder.append("[");
    }
while(numOfReplicas > 0){
chooseDataNode(scope, excludedNodes)
if (LOG.isDebugEnabled()) {
        builder.append("\nNode ").append(NodeBase.getPath(chosenNode))
            .append(" [");
      }
}
{code}

There's a possibility that the loglevel is INFO before entering while loop, but 
the loglevel is changed to DEBUG inside the loop through web UI.
In that case, builder is not initialized in the beginning and 
NullPointerException will throw and this will cause NN exiting.


> BlockPlacementPolicyDefault will cause NN shutdown if log level is changed
> --------------------------------------------------------------------------
>
>                 Key: HDFS-12416
>                 URL: https://issues.apache.org/jira/browse/HDFS-12416
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: block placement
>    Affects Versions: 2.7.4, 3.0.0-alpha3
>            Reporter: Suhan Mao
>         Attachments: HDFS-12416.001.patch, HDFS-12416.patch
>
>   Original Estimate: 5h
>  Remaining Estimate: 5h
>
> In BlockPlacementPolicyDefault.chooseRandom method.
> The code are in below structure:
> {code:java}
> StringBuilder builder = null;
>     if (LOG.isDebugEnabled()) {
>       builder = debugLoggingBuilder.get();
>       builder.setLength(0);
>       builder.append("[");
>     }
> while(numOfReplicas > 0){
> .............
> chooseDataNode(scope, excludedNodes)
> .............
> if (LOG.isDebugEnabled()) {
>         builder.append("\nNode ").append(NodeBase.getPath(chosenNode))
>             .append(" [");
>       }
> }
> {code}
> There's a possibility that the loglevel is INFO before entering while loop, 
> but the loglevel is changed to DEBUG inside the loop through web UI.
> In that case, builder is not initialized in the beginning and 
> NullPointerException will throw and this will cause NN exiting.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to