You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by st...@apache.org on 2017/07/06 15:21:35 UTC

hadoop git commit: HADOOP-14499. Findbugs warning in LocalMetadataStore. Contributed by Sean Mackrory.

Repository: hadoop
Updated Branches:
  refs/heads/HADOOP-13345 cf36cbd35 -> 309b8c0f8


HADOOP-14499. Findbugs warning in LocalMetadataStore.
Contributed by Sean Mackrory.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/309b8c0f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/309b8c0f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/309b8c0f

Branch: refs/heads/HADOOP-13345
Commit: 309b8c0f834a740999c37925d53a44be1aa640c1
Parents: cf36cbd
Author: Steve Loughran <st...@apache.org>
Authored: Thu Jul 6 16:20:55 2017 +0100
Committer: Steve Loughran <st...@apache.org>
Committed: Thu Jul 6 16:20:55 2017 +0100

----------------------------------------------------------------------
 .../fs/s3a/s3guard/LocalMetadataStore.java      | 12 ++++----
 .../fs/s3a/s3guard/MetadataStoreTestBase.java   | 29 ++++++++++++++++++++
 2 files changed, 36 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/309b8c0f/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java
index d7e256d..b3c7de5 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/s3guard/LocalMetadataStore.java
@@ -297,7 +297,6 @@ public class LocalMetadataStore implements MetadataStore {
     }
     Iterator<Map.Entry<Path, DirListingMetadata>> dirs =
         dirHash.entrySet().iterator();
-    Collection<Path> ancestors = new LinkedList<>();
     while (dirs.hasNext()) {
       Map.Entry<Path, DirListingMetadata> entry = dirs.next();
       Path path = entry.getKey();
@@ -311,11 +310,14 @@ public class LocalMetadataStore implements MetadataStore {
           newChildren.add(child);
         }
       }
-      if (newChildren.size() == 0) {
-        dirs.remove();
-        ancestors.add(entry.getKey());
-      } else {
+      if (newChildren.size() != oldChildren.size()) {
         dirHash.put(path, new DirListingMetadata(path, newChildren, false));
+        if (!path.isRoot()) {
+          DirListingMetadata parent = dirHash.get(path.getParent());
+          if (parent != null) {
+            parent.setAuthoritative(false);
+          }
+        }
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/309b8c0f/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java
index dfa8a9e..72cc512 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/s3guard/MetadataStoreTestBase.java
@@ -688,6 +688,35 @@ public abstract class MetadataStoreTestBase extends Assert {
     assertDeleted("/pruneDirs/dir/file");
   }
 
+  @Test
+  public void testPruneUnsetsAuthoritative() throws Exception {
+    String rootDir = "/unpruned-root-dir";
+    String grandparentDir = rootDir + "/pruned-grandparent-dir";
+    String parentDir = grandparentDir + "/pruned-parent-dir";
+    String staleFile = parentDir + "/stale-file";
+    String freshFile = rootDir + "/fresh-file";
+    String[] directories = {rootDir, grandparentDir, parentDir};
+
+    createNewDirs(rootDir, grandparentDir, parentDir);
+    long time = System.currentTimeMillis();
+    ms.put(new PathMetadata(
+        new FileStatus(0, false, 0, 0, time - 1, strToPath(staleFile)),
+        Tristate.FALSE, false));
+    ms.put(new PathMetadata(
+        new FileStatus(0, false, 0, 0, time + 1, strToPath(freshFile)),
+        Tristate.FALSE, false));
+
+    ms.prune(time);
+    DirListingMetadata listing;
+    for (String directory : directories) {
+      Path path = strToPath(directory);
+      if (ms.get(path) != null) {
+        listing = ms.listChildren(path);
+        assertFalse(listing.isAuthoritative());
+      }
+    }
+  }
+
   /*
    * Helper functions.
    */


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org