/// <exception cref="System.IO.IOException"/> public KeyManager(string blockpoolID, NamenodeProtocol namenode, bool encryptDataTransfer , Configuration conf) { this.namenode = namenode; this.encryptDataTransfer = encryptDataTransfer; ExportedBlockKeys keys = namenode.GetBlockKeys(); this.isBlockTokenEnabled = keys.IsBlockTokenEnabled(); if (isBlockTokenEnabled) { long updateInterval = keys.GetKeyUpdateInterval(); long tokenLifetime = keys.GetTokenLifetime(); Log.Info("Block token params received from NN: update interval=" + StringUtils.FormatTime (updateInterval) + ", token lifetime=" + StringUtils.FormatTime(tokenLifetime)); string encryptionAlgorithm = conf.Get(DFSConfigKeys.DfsDataEncryptionAlgorithmKey ); this.blockTokenSecretManager = new BlockTokenSecretManager(updateInterval, tokenLifetime , blockpoolID, encryptionAlgorithm); this.blockTokenSecretManager.AddKeys(keys); // sync block keys with NN more frequently than NN updates its block keys this.blockKeyUpdater = new KeyManager.BlockKeyUpdater(this, updateInterval / 4); this.shouldRun = true; } else { this.blockTokenSecretManager = null; this.blockKeyUpdater = null; } }
/// <exception cref="Com.Google.Protobuf.ServiceException"/> public virtual NamenodeProtocolProtos.GetBlockKeysResponseProto GetBlockKeys(RpcController unused, NamenodeProtocolProtos.GetBlockKeysRequestProto request) { ExportedBlockKeys keys; try { keys = impl.GetBlockKeys(); } catch (IOException e) { throw new ServiceException(e); } NamenodeProtocolProtos.GetBlockKeysResponseProto.Builder builder = NamenodeProtocolProtos.GetBlockKeysResponseProto .NewBuilder(); if (keys != null) { builder.SetKeys(PBHelper.Convert(keys)); } return((NamenodeProtocolProtos.GetBlockKeysResponseProto)builder.Build()); }