diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 361859ab3b1..d405af3aa3c 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -719,6 +719,9 @@ Release 2.9.0 - UNRELEASED HADOOP-12714. Fix hadoop-mapreduce-client-nativetask unit test which fails because it is not able to open the "glibc bug spill" file. (cmccabe) + HADOOP-12829. StatisticsDataReferenceCleaner swallows interrupt exceptions + (Gregory Chanan via cmccabe) + Release 2.8.0 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java index 3e26f68c526..8c1d57b4e2f 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java @@ -3184,15 +3184,16 @@ public abstract class FileSystem extends Configured implements Closeable { private static class StatisticsDataReferenceCleaner implements Runnable { @Override public void run() { - while (true) { + while (!Thread.interrupted()) { try { StatisticsDataReference ref = (StatisticsDataReference)STATS_DATA_REF_QUEUE.remove(); ref.cleanUp(); + } catch (InterruptedException ie) { + LOG.warn("Cleaner thread interrupted, will stop", ie); + Thread.currentThread().interrupt(); } catch (Throwable th) { - // the cleaner thread should continue to run even if there are - // exceptions, including InterruptedException - LOG.warn("exception in the cleaner thread but it will continue to " + LOG.warn("Exception in the cleaner thread but it will continue to " + "run", th); } }