[ 
https://issues.apache.org/jira/browse/HADOOP-1195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561446#action_12561446
 ] 

Raghu Angadi commented on HADOOP-1195:
--------------------------------------

> The premise of this bug fix is that a "Null Pointer Exception" is very bad. 
IMHO it is bad when null is expected (e.g. user arguments, RPC calls), no need 
to check for null when the context does not expect a null. I mean it does not 
need cover up some other bug. But I am not strongly against it. Your choice.

how about replacing the 2nd hunk with:

{noformat}
@@ -1967,8 +1967,7 @@
             (now() - heartbeatExpireInterval));
   }
     
-  void setDatanodeDead(DatanodeID nodeID) throws IOException {
-    DatanodeDescriptor node = getDatanode(nodeID);
+  private void setDatanodeDead(DatanodeDescriptor node) throws IOException {
     node.setLastUpdate(0);
   }
 
{noformat}



> NullPointerException in FSNamesystem due to getDatanode() return value is not 
> checked
> -------------------------------------------------------------------------------------
>
>                 Key: HADOOP-1195
>                 URL: https://issues.apache.org/jira/browse/HADOOP-1195
>             Project: Hadoop
>          Issue Type: Bug
>          Components: dfs
>            Reporter: Konstantin Shvachko
>            Assignee: dhruba borthakur
>             Fix For: 0.16.0
>
>         Attachments: datanodeNullPointer.patch
>
>
> FSNamesystem.getDatanode( nodeID ) returns null if the node is not found.
> There are several places where we do not check wether the returned node is 
> null, e.g.
> FSNamesystem.processReport()
> FSNamesystem.setDatanodeDead()
> FSNamesystem.invalidateBlock()
> FSNamesystem.verifyNodeRegistration()
> I'm getting the following NPE:
> 07/04/02 17:31:50 WARN dfs.DataNode: org.apache.hadoop.ipc.RemoteException: 
> java.io.IOException: java.lang.NullPointerException
>     at 
> org.apache.hadoop.dfs.FSNamesystem.shouldNodeShutdown(FSNamesystem.java:3306)
>     at 
> org.apache.hadoop.dfs.FSNamesystem.processReport(FSNamesystem.java:2012)
>     at org.apache.hadoop.dfs.NameNode.blockReport(NameNode.java:654)
>     at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
>     at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:585)
>     at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:341)
>     at org.apache.hadoop.ipc.Server$Handler.run(Server.java:580)
>     at org.apache.hadoop.ipc.Client.call(Client.java:473)
>     at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:164)
>     at org.apache.hadoop.dfs.$Proxy1.blockReport(Unknown Source)
>     at org.apache.hadoop.dfs.DataNode.offerService(DataNode.java:460)
>     at org.apache.hadoop.dfs.DataNode.run(DataNode.java:1095)
>     at 
> org.apache.hadoop.dfs.MiniDFSCluster$DataNodeRunner.run(MiniDFSCluster.java:160)
>     at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to