Bläddra i källkod

HADOOP-11659. o.a.h.FileSystem.Cache#remove should use a single hash map lookup. Contributed by Brahma Reddy Battula.

Akira Ajisaka 10 år sedan
förälder
incheckning
34117325b2

+ 3 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -449,6 +449,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-11692. Improve authentication failure WARN message to avoid user
     confusion. (Yongjun Zhang)
 
+    HADOOP-11659. o.a.h.fs.FileSystem.Cache#remove should use a single hash map
+    lookup. (Brahma Reddy Battula via aajisaka)
+
   OPTIMIZATIONS
 
   BUG FIXES

+ 7 - 4
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java

@@ -2700,10 +2700,12 @@ public abstract class FileSystem extends Configured implements Closeable {
     }
 
     synchronized void remove(Key key, FileSystem fs) {
-      if (map.containsKey(key) && fs == map.get(key)) {
-        map.remove(key);
+      FileSystem cachedFs = map.remove(key);
+      if (fs == cachedFs) {
         toAutoClose.remove(key);
-        }
+      } else if (cachedFs != null) {
+        map.put(key, cachedFs);
+      }
     }
 
     synchronized void closeAll() throws IOException {
@@ -2730,7 +2732,8 @@ public abstract class FileSystem extends Configured implements Closeable {
         }
 
         //remove from cache
-        remove(key, fs);
+        map.remove(key);
+        toAutoClose.remove(key);
 
         if (fs != null) {
           try {