From 6f19ba76888d945873c8e04ef6d515392ce74e59 Mon Sep 17 00:00:00 2001 From: Vinayakumar B Date: Fri, 17 Oct 2014 18:03:44 +0530 Subject: [PATCH] HDFS-7252. small refinement to the use of isInAnEZ in FSNamesystem. (Yi Liu via vinayakumarb) (cherry picked from commit 368743140dd076ecd5af309c1ed83c5ae2d59fc8) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/server/namenode/FSNamesystem.java | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 01651dcd376..30b0e6655f5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -44,6 +44,9 @@ Release 2.7.0 - UNRELEASED HDFS-7242. Code improvement for FSN#checkUnreadableBySuperuser. (Yi Liu via vinayakumarb) + HDFS-7252. small refinement to the use of isInAnEZ in FSNamesystem. + (Yi Liu via vinayakumarb) + Release 2.6.0 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 7be6cc1e71e..db2cc230f6e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -2561,11 +2561,11 @@ public class FSNamesystem implements Namesystem, FSClusterStats, src = resolvePath(src, pathComponents); INodesInPath iip = dir.getINodesInPath4Write(src); // Nothing to do if the path is not within an EZ - if (dir.isInAnEZ(iip)) { - EncryptionZone zone = dir.getEZForPath(iip); + final EncryptionZone zone = dir.getEZForPath(iip); + if (zone != null) { protocolVersion = chooseProtocolVersion(zone, supportedVersions); suite = zone.getSuite(); - ezKeyName = dir.getKeyName(iip); + ezKeyName = zone.getKeyName(); Preconditions.checkNotNull(protocolVersion); Preconditions.checkNotNull(suite); @@ -2648,14 +2648,16 @@ public class FSNamesystem implements Namesystem, FSClusterStats, } FileEncryptionInfo feInfo = null; - if (dir.isInAnEZ(iip)) { + + final EncryptionZone zone = dir.getEZForPath(iip); + if (zone != null) { // The path is now within an EZ, but we're missing encryption parameters if (suite == null || edek == null) { throw new RetryStartFileException(); } // Path is within an EZ and we have provided encryption parameters. // Make sure that the generated EDEK matches the settings of the EZ. - String ezKeyName = dir.getKeyName(iip); + final String ezKeyName = zone.getKeyName(); if (!ezKeyName.equals(edek.getEncryptionKeyName())) { throw new RetryStartFileException(); }