diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index a2381fa6379..c51378a1796 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -76,6 +76,9 @@ Release 2.7.3 - UNRELEASED HADOOP-12688. Fix deadlinks in Compatibility.md. (Gabor Liptak via aajisaka) + HADOOP-12958. PhantomReference for filesystem statistics can trigger OOM + (Sangjin Lee via jlowe) + Release 2.7.2 - 2016-01-25 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 35c28b7f5b2..fac3c408d5c 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 @@ -20,7 +20,7 @@ package org.apache.hadoop.fs; import java.io.Closeable; import java.io.FileNotFoundException; import java.io.IOException; -import java.lang.ref.PhantomReference; +import java.lang.ref.WeakReference; import java.lang.ref.ReferenceQueue; import java.net.URI; import java.net.URISyntaxException; @@ -2950,7 +2950,7 @@ public abstract class FileSystem extends Configured implements Closeable { /** * Set of all thread-local data areas. Protected by the Statistics lock. - * The references to the statistics data are kept using phantom references + * The references to the statistics data are kept using weak references * to the associated threads. Proper clean-up is performed by the cleaner * thread when the threads are garbage collected. */ @@ -3003,11 +3003,11 @@ public abstract class FileSystem extends Configured implements Closeable { } /** - * A phantom reference to a thread that also includes the data associated + * A weak reference to a thread that also includes the data associated * with that thread. On the thread being garbage collected, it is enqueued * to the reference queue for clean-up. */ - private class StatisticsDataReference extends PhantomReference { + private class StatisticsDataReference extends WeakReference { private final StatisticsData data; public StatisticsDataReference(StatisticsData data, Thread thread) {