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 c6cf941cee7..057382bed9c 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 @@ -4004,12 +4004,19 @@ public abstract class FileSystem extends Configured * Background action to act on references being removed. */ private static class StatisticsDataReferenceCleaner implements Runnable { + /** + * Represents the timeout period expires for remove reference objects from + * the STATS_DATA_REF_QUEUE when the queue is empty. + */ + private static final int REF_QUEUE_POLL_TIMEOUT = 10000; + @Override public void run() { while (!Thread.interrupted()) { try { StatisticsDataReference ref = - (StatisticsDataReference)STATS_DATA_REF_QUEUE.remove(); + (StatisticsDataReference)STATS_DATA_REF_QUEUE. + remove(REF_QUEUE_POLL_TIMEOUT); ref.cleanUp(); } catch (InterruptedException ie) { LOGGER.warn("Cleaner thread interrupted, will stop", ie);