Author: clamb Date: Fri Jul 18 17:13:55 2014 New Revision: 1611722 URL: http://svn.apache.org/r1611722 Log: HDFS-6490. Fix the keyid format for generated keys in FSNamesystem.createEncryptionZone (clamb)
Modified: hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/CHANGES-fs-encryption.txt hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Modified: hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/CHANGES-fs-encryption.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/CHANGES-fs-encryption.txt?rev=1611722&r1=1611721&r2=1611722&view=diff ============================================================================== --- hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/CHANGES-fs-encryption.txt (original) +++ hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/CHANGES-fs-encryption.txt Fri Jul 18 17:13:55 2014 @@ -46,6 +46,9 @@ fs-encryption (Unreleased) HDFS-6405. Test Crypto streams in HDFS. (yliu via wang) + HDFS-6490. Fix the keyid format for generated keys in + FSNamesystem.createEncryptionZone (clamb) + OPTIMIZATIONS BUG FIXES Modified: hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1611722&r1=1611721&r2=1611722&view=diff ============================================================================== --- hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/branches/fs-encryption/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Fri Jul 18 17:13:55 2014 @@ -420,6 +420,8 @@ public class FSNamesystem implements Nam private final CacheManager cacheManager; private final DatanodeStatistics datanodeStatistics; + private String nameserviceId; + private RollingUpgradeInfo rollingUpgradeInfo = null; /** * A flag that indicates whether the checkpointer should checkpoint a rollback @@ -791,7 +793,7 @@ public class FSNamesystem implements Nam // block allocation has to be persisted in HA using a shared edits directory // so that the standby has up-to-date namespace information - String nameserviceId = DFSUtil.getNamenodeNameServiceId(conf); + nameserviceId = DFSUtil.getNamenodeNameServiceId(conf); this.haEnabled = HAUtil.isHAEnabled(conf, nameserviceId); // Sanity check the HA-related config. @@ -8502,22 +8504,31 @@ public class FSNamesystem implements Nam /** * Create a new key on the KeyProvider for an encryption zone. * - * @param keyId id of the key + * @param keyIdArg id of the key * @param src path of the encryption zone. * @return KeyVersion of the created key * @throws IOException */ - private KeyVersion createNewKey(String keyId, String src) + private KeyVersion createNewKey(String keyIdArg, String src) throws IOException { - Preconditions.checkNotNull(keyId); + Preconditions.checkNotNull(keyIdArg); Preconditions.checkNotNull(src); - // TODO pass in hdfs://HOST:PORT (HDFS-6490) - providerOptions.setDescription(src); + final StringBuilder sb = new StringBuilder("hdfs://"); + if (nameserviceId != null) { + sb.append(nameserviceId); + } + sb.append(src); + if (!src.endsWith("/")) { + sb.append('/'); + } + sb.append(keyIdArg); + final String keyId = sb.toString(); + providerOptions.setDescription(keyId); providerOptions.setBitLength(codec.getCipherSuite() .getAlgorithmBlockSize()*8); KeyVersion version = null; try { - version = provider.createKey(keyId, providerOptions); + version = provider.createKey(keyIdArg, providerOptions); } catch (NoSuchAlgorithmException e) { throw new IOException(e); }