[
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: [email protected]
For additional commands, e-mail: [email protected]