HDFS-11883: [SPS] : Handle NPE in BlockStorageMovementTracker when dropSPSWork() called. Contributed by Surendra Singh Lilhore.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/445799b5 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/445799b5 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/445799b5 Branch: refs/heads/HDFS-10285 Commit: 445799b5619301e62a8e5ba5248d3e3f17b09500 Parents: 79dc141 Author: Uma Maheswara Rao G <[email protected]> Authored: Tue May 30 18:12:17 2017 -0700 Committer: Rakesh Radhakrishnan <[email protected]> Committed: Wed Jan 24 11:13:18 2018 +0530 ---------------------------------------------------------------------- .../hdfs/server/datanode/BlockStorageMovementTracker.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/445799b5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockStorageMovementTracker.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockStorageMovementTracker.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockStorageMovementTracker.java index 99858bc..c7e952b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockStorageMovementTracker.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockStorageMovementTracker.java @@ -88,13 +88,17 @@ public class BlockStorageMovementTracker implements Runnable { long trackId = result.getTrackId(); List<Future<BlockMovementResult>> blocksMoving = moverTaskFutures .get(trackId); + if (blocksMoving == null) { + LOG.warn("Future task doesn't exist for trackId " + trackId); + continue; + } blocksMoving.remove(future); List<BlockMovementResult> resultPerTrackIdList = addMovementResultToTrackIdList(result); // Completed all the scheduled blocks movement under this 'trackId'. - if (blocksMoving.isEmpty()) { + if (blocksMoving.isEmpty() || moverTaskFutures.get(trackId) == null) { synchronized (moverTaskFutures) { moverTaskFutures.remove(trackId); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
