diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Progress.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Progress.java index 9064357747..0af0844134 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Progress.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Progress.java @@ -160,6 +160,31 @@ public class Progress { /** Called during execution on a leaf node to set its progress. */ public synchronized void set(float progress) { + if (Float.isNaN(progress)) { + progress = 0; + LOG.warn("Illegal progress value found, progress is Float.NaN. " + + "Progress will be changed to 0"); + } + else if (progress == Float.NEGATIVE_INFINITY) { + progress = 0; + LOG.warn("Illegal progress value found, progress is " + + "Float.NEGATIVE_INFINITY. Progress will be changed to 0"); + } + else if (progress < 0) { + progress = 0; + LOG.warn("Illegal progress value found, progress is less than 0." + + " Progress will be changed to 0"); + } + else if (progress > 1) { + progress = 1; + LOG.warn("Illegal progress value found, progress is larger than 1." + + " Progress will be changed to 1"); + } + else if (progress == Float.POSITIVE_INFINITY) { + progress = 1; + LOG.warn("Illegal progress value found, progress is " + + "Float.POSITIVE_INFINITY. Progress will be changed to 1"); + } this.progress = progress; } diff --git a/hadoop-mapreduce-project/CHANGES.txt b/hadoop-mapreduce-project/CHANGES.txt index 6a2cc7cb28..ab5f95e935 100644 --- a/hadoop-mapreduce-project/CHANGES.txt +++ b/hadoop-mapreduce-project/CHANGES.txt @@ -147,6 +147,9 @@ Release 2.5.0 - UNRELEASED IMPROVEMENTS + MAPREDUCE-5671. NaN can be created by client and assign to Progress (Chen + He via jeagles) + OPTIMIZATIONS BUG FIXES