[ https://issues.apache.org/jira/browse/HDFS-12363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiao Chen updated HDFS-12363: ----------------------------- Attachment: HDFS-12363.02.patch Thanks for the review [~liuml07] and [~jojochuang]. Initially changed the later part only to make the code style more consistent (== null continue, v.s. !=null and indentation). But the least lines argument also makes sense, and style isn't that different anyways. So doing a minimum in patch 2. It is legit for a datanode to be removed between the lock release-reacquire. But as said in my last comment, unit test seems to need some non-trivial effort, and the NPE fix seems straightforward. So I'm hoping to go without a test. Easy testing ideas welcomed though :) > Possible NPE in BlockManager$StorageInfoDefragmenter#scanAndCompactStorages > --------------------------------------------------------------------------- > > Key: HDFS-12363 > URL: https://issues.apache.org/jira/browse/HDFS-12363 > Project: Hadoop HDFS > Issue Type: Bug > Components: namenode > Affects Versions: 2.6.0 > Reporter: Xiao Chen > Assignee: Xiao Chen > Attachments: HDFS-12363.01.patch, HDFS-12363.02.patch > > > Saw NN going down with NPE below: > {noformat} > ERROR org.apache.hadoop.hdfs.server.blockmanagement.BlockManager: Thread > received Runtime exception. > java.lang.NullPointerException > at > org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$StorageInfoDefragmenter.scanAndCompactStorages(BlockManager.java:3897) > at > org.apache.hadoop.hdfs.server.blockmanagement.BlockManager$StorageInfoDefragmenter.run(BlockManager.java:3852) > at java.lang.Thread.run(Thread.java:745) > 2017-08-21 22:14:05,303 INFO org.apache.hadoop.util.ExitUtil: Exiting with > status 1 > 2017-08-21 22:14:05,313 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: > {noformat} > In that version, {{BlockManager}} code is: > {code} > 3896 try { > 3897 DatanodeStorageInfo storage = datanodeManager. > 3898 getDatanode(datanodesAndStorages.get(i)). > 3899 getStorageInfo(datanodesAndStorages.get(i + 1)); > 3900 if (storage != null) { > {code} -- 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