Merge branch 'trunk' into HDFS-7240

 Conflicts:
        hadoop-common-project/hadoop-common/src/main/conf/log4j.properties
        
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/RemoteWasbAuthorizerImpl.java


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

Branch: refs/heads/HDFS-7240
Commit: 86414507f4f584ddde97ff5f1d9e38204b36f77a
Parents: f713452 54fd0e4
Author: Anu Engineer <[email protected]>
Authored: Mon May 8 22:42:21 2017 -0700
Committer: Anu Engineer <[email protected]>
Committed: Mon May 8 22:42:21 2017 -0700

----------------------------------------------------------------------
 dev-support/docker/Dockerfile                   |    2 +
 hadoop-build-tools/pom.xml                      |   10 +
 .../hadoop-client-minicluster/pom.xml           |    4 -
 hadoop-common-project/hadoop-common/pom.xml     |    5 +
 .../src/main/conf/log4j.properties              |   14 +
 .../org/apache/hadoop/conf/ConfigRedactor.java  |    5 +-
 .../hadoop/crypto/CryptoOutputStream.java       |    4 +-
 .../fs/CommonConfigurationKeysPublic.java       |   17 +-
 .../java/org/apache/hadoop/fs/CreateFlag.java   |    8 +-
 .../apache/hadoop/fs/FSDataOutputStream.java    |   10 +-
 .../java/org/apache/hadoop/fs/FileSystem.java   |    2 +-
 .../java/org/apache/hadoop/fs/FileUtil.java     |    5 +-
 .../apache/hadoop/fs/RawLocalFileSystem.java    |    2 +-
 .../apache/hadoop/fs/StreamCapabilities.java    |   67 ++
 .../hadoop/fs/http/AbstractHttpFileSystem.java  |  153 +++
 .../apache/hadoop/fs/http/HttpFileSystem.java   |   28 +
 .../apache/hadoop/fs/http/HttpsFileSystem.java  |   28 +
 .../org/apache/hadoop/fs/http/package-info.java |   23 +
 .../java/org/apache/hadoop/ha/NodeFencer.java   |    3 +-
 .../org/apache/hadoop/ha/PowerShellFencer.java  |  154 +++
 .../org/apache/hadoop/http/HttpServer2.java     |   48 +-
 .../hadoop/io/erasurecode/CodecRegistry.java    |  176 +++
 .../apache/hadoop/io/erasurecode/CodecUtil.java |   82 +-
 .../apache/hadoop/io/erasurecode/ECSchema.java  |   40 +-
 .../io/erasurecode/ErasureCodeConstants.java    |    1 +
 .../rawcoder/DummyRawErasureCoderFactory.java   |   12 +
 .../NativeRSRawErasureCoderFactory.java         |   13 +
 .../NativeXORRawErasureCoderFactory.java        |   13 +
 .../rawcoder/RSLegacyRawDecoder.java            |  270 +++++
 .../rawcoder/RSLegacyRawEncoder.java            |  129 +++
 .../RSLegacyRawErasureCoderFactory.java         |   51 +
 .../rawcoder/RSRawDecoderLegacy.java            |  270 -----
 .../rawcoder/RSRawEncoderLegacy.java            |  129 ---
 .../rawcoder/RSRawErasureCoderFactory.java      |   13 +
 .../RSRawErasureCoderFactoryLegacy.java         |   38 -
 .../rawcoder/RawErasureCoderFactory.java        |   12 +
 .../rawcoder/XORRawErasureCoderFactory.java     |   13 +
 .../org/apache/hadoop/ipc/CallQueueManager.java |    1 +
 .../apache/hadoop/ipc/DecayRpcScheduler.java    |   31 +-
 .../apache/hadoop/ipc/DefaultRpcScheduler.java  |    4 +
 .../org/apache/hadoop/ipc/RpcScheduler.java     |    2 +
 .../apache/hadoop/metrics2/AbstractMetric.java  |   16 +-
 .../org/apache/hadoop/metrics2/MetricsTag.java  |   13 +-
 .../metrics2/impl/AbstractMetricsRecord.java    |   16 +-
 .../org/apache/hadoop/metrics2/impl/MsInfo.java |    9 +-
 .../hadoop/metrics2/lib/MetricsInfoImpl.java    |   11 +-
 .../hadoop/metrics2/lib/MetricsRegistry.java    |   20 +-
 .../apache/hadoop/metrics2/package-info.java    |    2 +-
 .../hadoop/metrics2/source/JvmMetricsInfo.java  |    9 +-
 .../hadoop/metrics2/util/MetricsCache.java      |   18 +-
 .../org/apache/hadoop/net/NetworkTopology.java  |   12 +-
 .../apache/hadoop/security/ssl/SSLFactory.java  |   13 +-
 .../hadoop/service/ServiceStateException.java   |   66 +-
 .../launcher/AbstractLaunchableService.java     |   78 ++
 .../HadoopUncaughtExceptionHandler.java         |  129 +++
 .../service/launcher/InterruptEscalator.java    |  216 ++++
 .../hadoop/service/launcher/IrqHandler.java     |  178 +++
 .../service/launcher/LaunchableService.java     |   95 ++
 .../service/launcher/LauncherArguments.java     |   59 +
 .../service/launcher/LauncherExitCodes.java     |  183 +++
 .../launcher/ServiceLaunchException.java        |   81 ++
 .../service/launcher/ServiceLauncher.java       | 1044 ++++++++++++++++++
 .../service/launcher/ServiceShutdownHook.java   |  112 ++
 .../hadoop/service/launcher/package-info.java   |  462 ++++++++
 .../apache/hadoop/util/ExitCodeProvider.java    |   35 +
 .../java/org/apache/hadoop/util/ExitUtil.java   |  257 ++++-
 .../hadoop/util/GenericOptionsParser.java       |  125 ++-
 .../org/apache/hadoop/util/StringUtils.java     |   52 +-
 .../org/apache/hadoop/util/SysInfoWindows.java  |    2 +-
 .../services/org.apache.hadoop.fs.FileSystem    |    2 +
 ....erasurecode.rawcoder.RawErasureCoderFactory |   18 +
 .../src/main/resources/core-default.xml         |   35 +-
 .../src/site/markdown/DeprecatedProperties.md   |    1 +
 .../src/site/markdown/FileSystemShell.md        |    1 -
 .../hadoop-common/src/site/markdown/Metrics.md  |    4 +-
 .../src/site/markdown/RackAwareness.md          |   12 +-
 .../apache/hadoop/conf/TestConfigRedactor.java  |   22 +-
 .../kms/TestLoadBalancingKMSClientProvider.java |    2 +-
 .../apache/hadoop/fs/TestLocalFileSystem.java   |   37 +-
 .../apache/hadoop/fs/TestSymlinkLocalFS.java    |    6 +-
 .../contract/rawlocal/RawlocalFSContract.java   |    2 +-
 .../hadoop/fs/http/TestHttpFileSystem.java      |   67 ++
 .../fs/viewfs/ViewFileSystemBaseTest.java       |    6 +-
 .../apache/hadoop/fs/viewfs/ViewFsBaseTest.java |    2 +-
 .../apache/hadoop/http/TestSSLHttpServer.java   |   21 +-
 .../erasurecode/TestCodecRawCoderMapping.java   |   20 +-
 .../io/erasurecode/TestCodecRegistry.java       |  170 +++
 .../hadoop/io/erasurecode/TestECSchema.java     |   47 +-
 .../coder/TestHHXORErasureCoder.java            |    2 +-
 .../erasurecode/coder/TestRSErasureCoder.java   |    2 +-
 .../rawcoder/RawErasureCoderBenchmark.java      |    2 +-
 .../erasurecode/rawcoder/TestDummyRawCoder.java |    4 +-
 .../rawcoder/TestNativeRSRawCoder.java          |    4 +-
 .../rawcoder/TestNativeXORRawCoder.java         |    4 +-
 .../rawcoder/TestRSLegacyRawCoder.java          |   33 +
 .../io/erasurecode/rawcoder/TestRSRawCoder.java |    4 +-
 .../rawcoder/TestRSRawCoderInteroperable1.java  |    4 +-
 .../rawcoder/TestRSRawCoderInteroperable2.java  |    4 +-
 .../rawcoder/TestRSRawCoderLegacy.java          |   33 -
 .../erasurecode/rawcoder/TestRawCoderBase.java  |   16 +-
 .../erasurecode/rawcoder/TestXORRawCoder.java   |    4 +-
 .../rawcoder/TestXORRawCoderInteroperable1.java |    4 +-
 .../rawcoder/TestXORRawCoderInteroperable2.java |    4 +-
 .../java/org/apache/hadoop/ipc/TestIPC.java     |    2 +-
 .../hadoop/security/ssl/TestSSLFactory.java     |   10 +-
 .../apache/hadoop/service/BreakableService.java |   23 +-
 .../AbstractServiceLauncherTestBase.java        |  317 ++++++
 .../launcher/ExitTrackingServiceLauncher.java   |   59 +
 .../service/launcher/TestServiceConf.java       |  146 +++
 .../launcher/TestServiceInterruptHandling.java  |  118 ++
 .../service/launcher/TestServiceLauncher.java   |  213 ++++
 .../TestServiceLauncherCreationFailures.java    |   83 ++
 .../TestServiceLauncherInnerMethods.java        |   95 ++
 .../ExceptionInExecuteLaunchableService.java    |   96 ++
 .../testservices/FailInConstructorService.java  |   33 +
 .../testservices/FailInInitService.java         |   38 +
 .../testservices/FailInStartService.java        |   37 +
 .../testservices/FailingStopInStartService.java |   47 +
 .../testservices/FailureTestService.java        |   55 +
 .../InitInConstructorLaunchableService.java     |   63 ++
 .../testservices/LaunchableRunningService.java  |  111 ++
 .../testservices/NoArgsAllowedService.java      |   64 ++
 .../testservices/NullBindLaunchableService.java |   46 +
 .../launcher/testservices/RunningService.java   |   84 ++
 .../StoppingInStartLaunchableService.java       |   49 +
 .../StringConstructorOnlyService.java           |   39 +
 .../apache/hadoop/test/GenericTestUtils.java    |   34 +
 .../src/test/resources/contract/rawlocal.xml    |   32 +-
 hadoop-common-project/hadoop-kms/pom.xml        |    4 -
 .../crypto/key/kms/server/KMSWebServer.java     |    7 +-
 .../java/org/apache/hadoop/hdfs/DFSClient.java  |   23 +-
 .../org/apache/hadoop/hdfs/DFSOutputStream.java |   15 +-
 .../hadoop/hdfs/DFSStripedOutputStream.java     |   43 +-
 .../org/apache/hadoop/hdfs/DataStreamer.java    |   35 +-
 .../hadoop/hdfs/DistributedFileSystem.java      |   82 +-
 .../apache/hadoop/hdfs/StripedDataStreamer.java |   10 +-
 .../apache/hadoop/hdfs/client/HdfsAdmin.java    |   12 +
 .../hdfs/client/HdfsClientConfigKeys.java       |    4 +
 .../hdfs/protocol/AddingECPolicyResponse.java   |   66 ++
 .../hdfs/protocol/ClientDatanodeProtocol.java   |    5 +
 .../hadoop/hdfs/protocol/ClientProtocol.java    |   21 +-
 .../hdfs/protocol/DatanodeVolumeInfo.java       |  122 ++
 .../hdfs/protocol/ErasureCodingPolicy.java      |   53 +-
 .../hadoop/hdfs/protocol/HdfsFileStatus.java    |   22 +-
 .../hdfs/protocol/IllegalECPolicyException.java |   34 +
 .../datatransfer/DataTransferProtocol.java      |   19 +-
 .../hdfs/protocol/datatransfer/Sender.java      |   29 +-
 .../ClientDatanodeProtocolTranslatorPB.java     |   29 +
 .../ClientNamenodeProtocolTranslatorPB.java     |   25 +
 .../hadoop/hdfs/protocolPB/PBHelperClient.java  |   47 +
 .../token/block/BlockTokenIdentifier.java       |   66 +-
 .../apache/hadoop/hdfs/util/ECPolicyLoader.java |  325 ++++++
 .../src/main/proto/ClientDatanodeProtocol.proto |    9 +
 .../src/main/proto/ClientNamenodeProtocol.proto |    3 +
 .../src/main/proto/datatransfer.proto           |    4 +
 .../src/main/proto/erasurecoding.proto          |    8 +
 .../src/main/proto/hdfs.proto                   |   21 +
 .../hdfs/protocol/TestErasureCodingPolicy.java  |   86 ++
 .../hadoop/hdfs/util/TestECPolicyLoader.java    |  313 ++++++
 hadoop-hdfs-project/hadoop-hdfs-httpfs/pom.xml  |    8 -
 .../fs/http/server/HttpFSServerWebServer.java   |    7 +-
 .../src/main/native/libhdfs-tests/expect.h      |   18 +
 .../libhdfs-tests/test_libhdfs_threaded.c       |   16 +
 .../src/main/native/libhdfs/exception.c         |   75 +-
 .../src/main/native/libhdfs/exception.h         |   16 +-
 .../src/main/native/libhdfs/hdfs.c              |   90 ++
 .../src/main/native/libhdfs/include/hdfs/hdfs.h |   61 +
 .../src/main/native/libhdfs/jni_helper.c        |   95 +-
 .../src/main/native/libhdfs/jni_helper.h        |   35 +
 .../libhdfs/os/posix/thread_local_storage.c     |   54 +-
 .../native/libhdfs/os/thread_local_storage.h    |   61 +-
 .../libhdfs/os/windows/thread_local_storage.c   |   50 +-
 .../src/main/conf/user_ec_policies.xml.template |   71 ++
 .../org/apache/hadoop/hdfs/DFSConfigKeys.java   |   17 +-
 .../hadoop/hdfs/net/DFSNetworkTopology.java     |   24 +-
 .../hadoop/hdfs/net/DFSTopologyNodeImpl.java    |  137 +++
 .../hdfs/protocol/datatransfer/Receiver.java    |   20 +-
 ...tDatanodeProtocolServerSideTranslatorPB.java |   28 +
 ...tNamenodeProtocolServerSideTranslatorPB.java |   31 +-
 .../hadoop/hdfs/qjournal/server/JNStorage.java  |   25 +-
 .../hadoop/hdfs/qjournal/server/Journal.java    |   21 +-
 .../hdfs/qjournal/server/JournalNodeSyncer.java |  104 +-
 .../block/BlockPoolTokenSecretManager.java      |   34 +-
 .../token/block/BlockTokenSecretManager.java    |   70 +-
 .../hadoop/hdfs/server/balancer/Dispatcher.java |   47 +-
 .../hadoop/hdfs/server/balancer/KeyManager.java |    8 +-
 .../hdfs/server/balancer/NameNodeConnector.java |   13 +-
 .../server/blockmanagement/BlockManager.java    |   44 +-
 .../BlockPlacementPolicyDefault.java            |   36 +-
 .../blockmanagement/DatanodeDescriptor.java     |   68 +-
 .../server/blockmanagement/DatanodeManager.java |   26 +-
 .../blockmanagement/LowRedundancyBlocks.java    |    6 +-
 .../apache/hadoop/hdfs/server/common/Util.java  |   12 +-
 .../hdfs/server/datanode/BPOfferService.java    |    3 +-
 .../hdfs/server/datanode/BPServiceActor.java    |    3 +
 .../hdfs/server/datanode/BlockReceiver.java     |   12 +-
 .../hadoop/hdfs/server/datanode/DNConf.java     |    7 +-
 .../hadoop/hdfs/server/datanode/DataNode.java   |   80 +-
 .../server/datanode/DataNodeFaultInjector.java  |    6 +-
 .../hdfs/server/datanode/DataXceiver.java       |  113 +-
 .../hdfs/server/datanode/FileIoProvider.java    |    4 +-
 .../server/datanode/ProfilingFileIoEvents.java  |   19 +-
 .../erasurecode/ErasureCodingWorker.java        |    3 +-
 .../erasurecode/StripedBlockReader.java         |    4 +-
 .../erasurecode/StripedBlockWriter.java         |   11 +-
 .../erasurecode/StripedReconstructionInfo.java  |   16 +-
 .../datanode/erasurecode/StripedWriter.java     |    5 +-
 .../AvailableSpaceVolumeChoosingPolicy.java     |   20 +-
 .../server/datanode/fsdataset/FsDatasetSpi.java |    6 +-
 .../RoundRobinVolumeChoosingPolicy.java         |    2 +-
 .../fsdataset/VolumeChoosingPolicy.java         |    5 +-
 .../datanode/fsdataset/impl/FsDatasetImpl.java  |   21 +-
 .../datanode/fsdataset/impl/FsVolumeList.java   |   19 +-
 .../datanode/web/SimpleHttpProxyHandler.java    |    4 +-
 .../namenode/ErasureCodingPolicyManager.java    |   95 +-
 .../server/namenode/FSDirErasureCodingOp.java   |   13 +-
 .../hdfs/server/namenode/FSDirSnapshotOp.java   |    7 +-
 .../hdfs/server/namenode/FSDirWriteFileOp.java  |   31 +-
 .../hdfs/server/namenode/FSEditLogLoader.java   |    5 +-
 .../hadoop/hdfs/server/namenode/FSImage.java    |   52 +-
 .../server/namenode/FSImageFormatPBINode.java   |    3 +-
 .../hdfs/server/namenode/FSNamesystem.java      |   51 +-
 .../hdfs/server/namenode/FSNamesystemLock.java  |  121 +-
 .../hdfs/server/namenode/INodeDirectory.java    |    8 +-
 .../hadoop/hdfs/server/namenode/INodeFile.java  |    7 +-
 .../hdfs/server/namenode/INodesInPath.java      |   78 +-
 .../hdfs/server/namenode/LeaseManager.java      |  103 +-
 .../hdfs/server/namenode/NameNodeRpcServer.java |   10 +-
 .../server/namenode/ha/StandbyCheckpointer.java |    7 +-
 .../snapshot/DirectorySnapshottableFeature.java |   15 +-
 .../namenode/snapshot/SnapshotManager.java      |   24 +-
 .../org/apache/hadoop/hdfs/tools/DFSAdmin.java  |   30 +-
 .../org/apache/hadoop/hdfs/tools/ECAdmin.java   |   63 ++
 .../src/main/resources/hdfs-default.xml         |   42 +-
 .../src/main/webapps/hdfs/dfshealth.html        |    2 +-
 .../src/main/webapps/hdfs/dfshealth.js          |    4 +-
 .../src/site/markdown/HDFSCommands.md           |    2 +
 .../src/site/markdown/HDFSErasureCoding.md      |   28 +-
 .../org/apache/hadoop/TestRefreshCallQueue.java |   88 +-
 .../org/apache/hadoop/hdfs/DFSTestUtil.java     |    9 +-
 .../hadoop/hdfs/TestBlockStoragePolicy.java     |  143 +++
 .../apache/hadoop/hdfs/TestDFSOutputStream.java |   25 +
 .../hadoop/hdfs/TestDFSStripedInputStream.java  |    2 +-
 .../hadoop/hdfs/TestDFSStripedOutputStream.java |   37 +-
 .../TestDFSStripedOutputStreamWithFailure.java  |    2 +-
 .../hadoop/hdfs/TestDataTransferProtocol.java   |    3 +-
 .../hadoop/hdfs/TestDistributedFileSystem.java  |   39 +
 .../apache/hadoop/hdfs/TestEncryptionZones.java |   10 +-
 .../hadoop/hdfs/TestErasureCodingPolicies.java  |   58 +
 .../org/apache/hadoop/hdfs/TestGetBlocks.java   |   77 +-
 .../org/apache/hadoop/hdfs/TestHdfsAdmin.java   |   33 +
 .../hadoop/hdfs/TestReconstructStripedFile.java |    2 +-
 .../TestUnsetAndChangeDirectoryEcPolicy.java    |    2 +-
 .../hdfs/TestWriteBlockGetsBlockLengthHint.java |    6 +-
 .../hadoop/hdfs/protocolPB/TestPBHelper.java    |   35 +
 .../hdfs/qjournal/TestJournalNodeSync.java      |    1 +
 .../security/token/block/TestBlockToken.java    |  186 +++-
 .../hdfs/server/balancer/TestBalancer.java      |  100 +-
 .../server/balancer/TestBalancerRPCDelay.java   |   32 +
 .../blockmanagement/BlockManagerTestUtil.java   |   21 +
 .../blockmanagement/TestSlowDiskTracker.java    |    4 +-
 .../server/datanode/BlockReportTestBase.java    |    2 +-
 .../server/datanode/SimulatedFSDataset.java     |   19 +-
 .../hdfs/server/datanode/TestBlockRecovery.java |    6 +-
 .../server/datanode/TestBlockReplacement.java   |    2 +-
 .../server/datanode/TestDataNodeMXBean.java     |    4 +-
 .../server/datanode/TestDataNodeMetrics.java    |    7 +-
 .../datanode/TestDataNodeVolumeMetrics.java     |    4 +-
 .../TestDataXceiverLazyPersistHint.java         |    4 +-
 .../hdfs/server/datanode/TestDiskError.java     |    5 +-
 .../server/datanode/TestFsDatasetCache.java     |   62 +-
 .../server/datanode/TestSimulatedFSDataset.java |    4 +-
 .../extdataset/ExternalDatasetImpl.java         |   10 +-
 .../TestAvailableSpaceVolumeChoosingPolicy.java |   76 +-
 .../TestRoundRobinVolumeChoosingPolicy.java     |   29 +-
 .../fsdataset/impl/TestFsDatasetImpl.java       |    4 +-
 .../fsdataset/impl/TestFsVolumeList.java        |    2 +-
 .../fsdataset/impl/TestWriteToReplica.java      |   29 +-
 .../hdfs/server/namenode/NameNodeAdapter.java   |   31 +-
 .../hdfs/server/namenode/TestCheckpoint.java    |    4 +-
 .../namenode/TestDecommissioningStatus.java     |  113 +-
 .../TestDefaultBlockPlacementPolicy.java        |   46 +
 .../server/namenode/TestEnabledECPolicies.java  |   11 +-
 .../server/namenode/TestFSNamesystemLock.java   |   16 +-
 .../hdfs/server/namenode/TestLeaseManager.java  |  286 ++++-
 .../namenode/TestMetadataVersionOutput.java     |    4 +-
 .../namenode/TestNameNodeStatusMXBean.java      |    5 +-
 .../namenode/TestNamenodeStorageDirectives.java |  330 ++++++
 .../namenode/TestReconstructStripedBlocks.java  |    2 +
 .../hdfs/server/namenode/TestStartup.java       |    5 +-
 .../namenode/ha/TestStandbyCheckpoints.java     |   60 +
 .../snapshot/TestOpenFilesWithSnapshot.java     |  298 +++++
 .../snapshot/TestSnapshotDiffReport.java        |  188 +++-
 .../namenode/snapshot/TestSnapshotManager.java  |   11 +-
 .../shortcircuit/TestShortCircuitCache.java     |    8 +-
 .../apache/hadoop/hdfs/tools/TestDFSAdmin.java  |   20 +
 .../hadoop/tools/TestHdfsConfigFields.java      |    2 -
 .../test/resources/testErasureCodingConf.xml    |   68 ++
 .../src/test/resources/test_ec_policies.xml     |   65 ++
 hadoop-mapreduce-project/.gitignore             |    1 -
 hadoop-mapreduce-project/conf/mapred-site.xml   |   21 +
 .../conf/mapred-site.xml.template               |   21 -
 .../hadoop/mapred/LocalContainerLauncher.java   |   46 +-
 .../hadoop/mapreduce/v2/app/MRAppMaster.java    |   16 +-
 .../java/org/apache/hadoop/mapred/JVMId.java    |    2 +-
 .../org/apache/hadoop/mapred/Operation.java     |   14 +-
 .../apache/hadoop/mapreduce/MRJobConfig.java    |    6 +
 .../mapreduce/v2/hs/HistoryFileManager.java     |    5 -
 .../mapreduce/v2/hs/JobHistoryServer.java       |    3 -
 .../org/apache/hadoop/mapred/YARNRunner.java    |  132 ++-
 .../apache/hadoop/hdfs/NNBenchWithoutMR.java    |    6 +-
 .../mapred/TestMRTimelineEventHandling.java     |    2 +-
 .../apache/hadoop/mapred/TestYARNRunner.java    |  167 +++
 .../hadoop/mapreduce/GrowingSleepJob.java       |   68 ++
 .../hadoop/mapreduce/v2/MiniMRYarnCluster.java  |    6 +-
 .../apache/hadoop/test/MapredTestDriver.java    |    3 +
 .../org/apache/hadoop/examples/pi/Parser.java   |    8 +-
 hadoop-project/pom.xml                          |   24 +-
 hadoop-tools/hadoop-archive-logs/pom.xml        |    5 +
 hadoop-tools/hadoop-aws/pom.xml                 |   10 +-
 .../org/apache/hadoop/fs/s3a/Constants.java     |   28 +-
 .../hadoop/fs/s3a/S3AEncryptionMethods.java     |   13 +-
 .../org/apache/hadoop/fs/s3a/S3AFileSystem.java |   30 +-
 .../java/org/apache/hadoop/fs/s3a/S3AUtils.java |  120 +-
 .../src/site/markdown/tools/hadoop-aws/index.md |   83 +-
 .../site/markdown/tools/hadoop-aws/testing.md   |    4 +-
 .../fs/s3a/AbstractTestS3AEncryption.java       |    4 +
 .../ITestS3AEncryptionAlgorithmValidation.java  |    4 +-
 .../hadoop/fs/s3a/ITestS3AEncryptionSSEC.java   |  308 +++++-
 .../hadoop/fs/s3a/TestSSEConfiguration.java     |  223 ++++
 .../src/site/markdown/index.md                  |    4 +-
 .../fs/adl/live/AdlStorageConfiguration.java    |    8 +-
 .../hadoop/fs/azure/NativeAzureFileSystem.java  |    3 -
 .../fs/azure/RemoteSASKeyGeneratorImpl.java     |   26 +-
 .../fs/azure/RemoteWasbAuthorizerImpl.java      |   22 +-
 .../fs/azure/SyncableDataOutputStream.java      |   12 +-
 .../fs/azure/security/WasbTokenRenewer.java     |    6 -
 .../mapred/gridmix/TestGridmixSubmission.java   |    3 +-
 .../hadoop/metrics2/impl/TestKafkaMetrics.java  |   10 +-
 hadoop-tools/hadoop-openstack/pom.xml           |    6 +-
 .../SwiftAuthenticationFailedException.java     |    6 +-
 .../exceptions/SwiftBadRequestException.java    |    6 +-
 .../SwiftInvalidResponseException.java          |    9 +-
 .../SwiftThrottledRequestException.java         |    6 +-
 .../apache/hadoop/fs/swift/http/CopyMethod.java |   41 -
 .../hadoop/fs/swift/http/CopyRequest.java       |   41 +
 .../swift/http/HttpInputStreamWithRelease.java  |   25 +-
 .../hadoop/fs/swift/http/SwiftRestClient.java   |  805 +++++++-------
 .../snative/SwiftNativeFileSystemStore.java     |   11 +-
 .../hadoop/fs/swift/util/HttpResponseUtils.java |  121 ++
 .../TestSwiftFileSystemPartitionedUploads.java  |    2 +-
 .../fs/swift/http/TestSwiftRestClient.java      |    2 +-
 .../src/test/resources/log4j.properties         |    3 -
 .../org/apache/hadoop/tools/rumen/TaskInfo.java |   29 +-
 .../apache/hadoop/tools/rumen/ZombieJob.java    |    9 +-
 hadoop-tools/hadoop-sls/pom.xml                 |   19 +
 hadoop-tools/hadoop-sls/src/main/bin/slsrun.sh  |   46 +-
 .../hadoop/yarn/sls/ReservationClientUtil.java  |   78 ++
 .../org/apache/hadoop/yarn/sls/SLSRunner.java   |  859 +++++++++-----
 .../hadoop/yarn/sls/appmaster/AMSimulator.java  |  131 ++-
 .../yarn/sls/appmaster/MRAMSimulator.java       |    9 +-
 .../sls/resourcemanager/MockAMLauncher.java     |    5 +
 .../sls/scheduler/SLSCapacityScheduler.java     |   33 +-
 .../yarn/sls/scheduler/SLSFairScheduler.java    |   31 +-
 .../yarn/sls/scheduler/SchedulerWrapper.java    |    4 +
 .../hadoop/yarn/sls/scheduler/TaskRunner.java   |    9 +-
 .../hadoop/yarn/sls/synthetic/SynthJob.java     |  306 +++++
 .../yarn/sls/synthetic/SynthJobClass.java       |  180 +++
 .../sls/synthetic/SynthTraceJobProducer.java    |  316 ++++++
 .../hadoop/yarn/sls/synthetic/SynthUtils.java   |  101 ++
 .../yarn/sls/synthetic/SynthWorkload.java       |  121 ++
 .../hadoop/yarn/sls/synthetic/package-info.java |   22 +
 .../apache/hadoop/yarn/sls/utils/SLSUtils.java  |   52 +-
 .../apache/hadoop/yarn/sls/web/SLSWebApp.java   |   33 +-
 .../src/site/markdown/SchedulerLoadSimulator.md |  150 ++-
 .../hadoop/yarn/sls/BaseSLSRunnerTest.java      |  120 ++
 .../apache/hadoop/yarn/sls/TestSLSRunner.java   |   90 +-
 .../hadoop/yarn/sls/TestSynthJobGeneration.java |   96 ++
 .../yarn/sls/appmaster/TestAMSimulator.java     |    2 +-
 .../yarn/sls/scheduler/TestTaskRunner.java      |    2 +-
 .../hadoop/yarn/sls/utils/TestSLSUtils.java     |   30 +
 .../src/test/resources/capacity-scheduler.xml   |   10 +
 .../src/test/resources/fair-scheduler.xml       |    8 +-
 .../hadoop-sls/src/test/resources/inputsls.json |   55 +
 .../hadoop-sls/src/test/resources/nodes.json    |   84 ++
 .../src/test/resources/sls-runner.xml           |    6 +-
 .../hadoop-sls/src/test/resources/syn.json      |   53 +
 .../hadoop-sls/src/test/resources/yarn-site.xml |   10 +-
 .../yarn/api/ContainerManagementProtocol.java   |    8 +-
 .../yarn/api/records/QueueConfigurations.java   |  150 +++
 .../hadoop/yarn/api/records/QueueInfo.java      |   42 +
 .../hadoop/yarn/conf/YarnConfiguration.java     |    4 +
 .../yarn/exceptions/ConfigurationException.java |   45 +
 .../src/main/proto/yarn_protos.proto            |   14 +
 .../yarn/client/api/impl/YarnClientImpl.java    |   10 +-
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  |   58 +-
 .../hadoop/yarn/client/ProtocolHATestBase.java  |    6 +-
 .../yarn/client/api/impl/TestAMRMClient.java    |    2 +-
 .../hadoop/yarn/client/cli/TestYarnCLI.java     |    4 +-
 .../impl/pb/QueueConfigurationsPBImpl.java      |  137 +++
 .../api/records/impl/pb/QueueInfoPBImpl.java    |   98 +-
 .../apache/hadoop/yarn/client/ServerProxy.java  |    5 +
 .../yarn/client/api/impl/TimelineConnector.java |    9 +-
 .../hadoop/yarn/event/AsyncDispatcher.java      |   12 +-
 .../apache/hadoop/yarn/event/Dispatcher.java    |    9 -
 .../hadoop/yarn/event/EventDispatcher.java      |   17 +-
 .../logaggregation/AggregatedLogFormat.java     |    4 +
 .../yarn/util/ProcfsBasedProcessTree.java       |   37 +-
 .../util/ResourceCalculatorProcessTree.java     |   54 -
 .../yarn/util/WindowsBasedProcessTree.java      |   12 -
 .../hadoop/yarn/webapp/util/WebAppUtils.java    |   17 +-
 .../src/main/resources/yarn-default.xml         |   22 +-
 .../hadoop/yarn/api/TestPBImplRecords.java      |   21 +-
 .../client/api/impl/TestTimelineClient.java     |    2 +
 .../hadoop/yarn/event/DrainDispatcher.java      |   11 +-
 .../yarn/util/TestProcfsBasedProcessTree.java   |   72 +-
 .../yarn/util/TestWindowsBasedProcessTree.java  |   12 -
 .../pom.xml                                     |   12 +-
 .../server/nodemanager/ContainerExecutor.java   |    4 +-
 .../nodemanager/DefaultContainerExecutor.java   |    7 +-
 .../nodemanager/LinuxContainerExecutor.java     |   79 +-
 .../nodemanager/NodeHealthCheckerService.java   |   54 +-
 .../yarn/server/nodemanager/NodeManager.java    |    5 -
 .../server/nodemanager/NodeStatusUpdater.java   |    6 +
 .../nodemanager/NodeStatusUpdaterImpl.java      |    8 +-
 .../nodemanager/amrmproxy/AMRMProxyService.java |   63 +-
 .../containermanager/ContainerManager.java      |    2 -
 .../containermanager/ContainerManagerImpl.java  |   28 -
 .../launcher/ContainerLaunch.java               |   38 +-
 .../launcher/ContainerRelaunch.java             |    9 +
 .../linux/resources/CGroupsHandlerImpl.java     |   10 +-
 .../DelegatingLinuxContainerRuntime.java        |    9 +-
 .../JavaSandboxLinuxContainerRuntime.java       |   13 +-
 .../runtime/docker/DockerCommandExecutor.java   |  191 ++++
 .../linux/runtime/docker/package-info.java      |   26 +
 .../monitor/ContainersMonitorImpl.java          |   49 +-
 .../util/CgroupsLCEResourcesHandler.java        |   13 +-
 .../impl/container-executor.c                   |   40 +-
 .../impl/container-executor.h                   |   22 +-
 .../nodemanager/DummyContainerManager.java      |    6 +-
 .../TestDefaultContainerExecutor.java           |    3 +-
 .../nodemanager/TestLinuxContainerExecutor.java |    9 +-
 .../TestLinuxContainerExecutorWithMocks.java    |  217 ++--
 .../nodemanager/TestNodeHealthService.java      |   11 +-
 .../nodemanager/TestNodeManagerResync.java      |  164 ---
 .../amrmproxy/BaseAMRMProxyTest.java            |   21 +-
 .../amrmproxy/TestAMRMProxyService.java         |   65 ++
 .../TestAMRMProxyTokenSecretManager.java        |   81 ++
 .../BaseContainerManagerTest.java               |   13 +-
 .../containermanager/TestContainerManager.java  |    5 -
 .../TestContainerManagerRecovery.java           |   16 +-
 .../containermanager/TestNMProxy.java           |   30 +-
 .../launcher/TestContainerLaunch.java           |   65 +-
 .../MockPrivilegedOperationCaptor.java          |   68 ++
 .../linux/resources/TestCGroupsHandlerImpl.java |   37 +
 .../runtime/TestDockerContainerRuntime.java     |   13 +-
 .../TestJavaSandboxLinuxContainerRuntime.java   |   20 +-
 .../docker/TestDockerCommandExecutor.java       |  218 ++++
 .../runtime/docker/TestDockerLoadCommand.java   |   48 +
 .../runtime/docker/TestDockerRunCommand.java    |   63 ++
 .../TestResourceLocalizationService.java        |    2 -
 .../TestContainersMonitorResourceChange.java    |    3 +-
 .../TestContainerSchedulerQueuing.java          |    9 +-
 .../util/TestCgroupsLCEResourcesHandler.java    |   29 +
 ...-container-executer-with-configuration-error |   20 +
 .../hadoop-yarn-server-resourcemanager/pom.xml  |    1 +
 .../server/resourcemanager/AdminService.java    |    3 +
 .../ApplicationMasterService.java               |    2 +-
 .../server/resourcemanager/RMAppManager.java    |    1 +
 .../server/resourcemanager/ResourceManager.java |    1 -
 .../ProportionalCapacityPreemptionPolicy.java   |   17 +-
 .../invariants/InvariantViolationException.java |   35 +
 .../monitor/invariants/InvariantsChecker.java   |   96 ++
 .../invariants/MetricsInvariantChecker.java     |  195 ++++
 .../monitor/invariants/package-info.java        |   22 +
 .../recovery/ZKRMStateStore.java                |  506 +++++++--
 .../reservation/InMemoryPlan.java               |   11 +
 .../PeriodicRLESparseResourceAllocation.java    |  167 +++
 .../resourcemanager/reservation/PlanView.java   |    9 +
 .../RLESparseResourceAllocation.java            |   51 +
 .../planning/AlignedPlannerWithGreedy.java      |   15 +-
 .../planning/GreedyReservationAgent.java        |   13 +-
 .../reservation/planning/IterativePlanner.java  |  196 ++--
 .../reservation/planning/ReservationAgent.java  |   23 +-
 .../planning/SimpleCapacityReplanner.java       |    8 +-
 .../reservation/planning/StageAllocator.java    |   10 +-
 .../planning/StageAllocatorGreedy.java          |    4 +-
 .../planning/StageAllocatorGreedyRLE.java       |    4 +-
 .../planning/StageAllocatorLowCostAligned.java  |  279 +++--
 .../planning/StageEarliestStart.java            |   46 -
 .../planning/StageEarliestStartByDemand.java    |  106 --
 .../StageEarliestStartByJobArrival.java         |   39 -
 .../planning/StageExecutionInterval.java        |   47 +
 .../StageExecutionIntervalByDemand.java         |  144 +++
 .../StageExecutionIntervalUnconstrained.java    |   73 ++
 .../server/resourcemanager/rmapp/RMAppImpl.java |   24 +-
 .../rmapp/attempt/RMAppAttemptImpl.java         |    6 +-
 .../rmapp/attempt/RMAppAttemptMetrics.java      |    2 +-
 .../scheduler/AbstractYarnScheduler.java        |    2 +-
 .../resourcemanager/scheduler/NodeType.java     |   12 +-
 .../resourcemanager/scheduler/QueueMetrics.java |   21 +-
 .../scheduler/capacity/AbstractCSQueue.java     |   25 +
 .../scheduler/capacity/CSQueueMetrics.java      |    4 +-
 .../capacity/CapacitySchedulerQueueManager.java |    6 +-
 .../resourcemanager/scheduler/fair/FSQueue.java |    3 +
 .../scheduler/fair/FSQueueMetrics.java          |    4 +-
 .../scheduler/fair/FSSchedulerNode.java         |    8 +-
 .../yarn/server/resourcemanager/MockRM.java     |   10 +-
 .../server/resourcemanager/TestAppManager.java  |    2 +
 .../resourcemanager/TestClientRMService.java    |   25 +
 .../resourcemanager/TestRMDispatcher.java       |    1 +
 .../resourcemanager/TestRMStoreCommands.java    |   15 +-
 .../applicationsmanager/TestAMRestart.java      |  140 ++-
 .../invariants/TestMetricsInvariantChecker.java |   99 ++
 .../recovery/RMStateStoreTestBase.java          |   10 +-
 .../recovery/TestFSRMStateStore.java            |    1 +
 .../recovery/TestLeveldbRMStateStore.java       |    1 +
 .../recovery/TestZKRMStateStore.java            |  573 +++++++++-
 .../reservation/ReservationSystemTestUtil.java  |   14 +
 ...TestPeriodicRLESparseResourceAllocation.java |  142 +++
 .../TestRLESparseResourceAllocation.java        |   56 +-
 .../planning/TestAlignedPlanner.java            |  417 ++++++-
 .../planning/TestGreedyReservationAgent.java    |   14 +-
 .../planning/TestSimpleCapacityReplanner.java   |    4 +-
 .../scheduler/TestAbstractYarnScheduler.java    |    2 +-
 .../capacity/TestCapacityScheduler.java         |   15 +-
 .../scheduler/fair/TestFairScheduler.java       |   15 +
 .../src/test/resources/invariants.txt           |   54 +
 .../hadoop/yarn/server/MiniYARNCluster.java     |   22 +-
 .../server/TestContainerManagerSecurity.java    |   14 +-
 .../hadoop/yarn/server/TestMiniYarnCluster.java |   34 +-
 .../collector/AppLevelTimelineCollector.java    |    8 +-
 .../collector/TimelineCollector.java            |   27 +-
 .../storage/FileSystemTimelineReaderImpl.java   |  129 +--
 .../collector/TestTimelineCollector.java        |   95 +-
 .../src/site/markdown/FairScheduler.md          |    6 +
 .../src/main/webapp/app/adapters/yarn-app.js    |    2 +-
 .../webapp/app/components/em-table-html-cell.js |   23 +
 .../main/webapp/app/components/timeline-view.js |   13 +-
 .../webapp/app/controllers/app-table-columns.js |  213 ++--
 .../webapp/app/controllers/yarn-app-attempt.js  |   32 +-
 .../webapp/app/controllers/yarn-app-attempts.js |   23 +-
 .../src/main/webapp/app/controllers/yarn-app.js |   21 +-
 .../webapp/app/controllers/yarn-apps/apps.js    |    9 +-
 .../app/controllers/yarn-apps/services.js       |    9 +-
 .../webapp/app/controllers/yarn-nodes/table.js  |    8 +
 .../webapp/app/controllers/yarn-services.js     |   79 +-
 .../src/main/webapp/app/models/yarn-app.js      |    6 +-
 .../src/main/webapp/app/router.js               |    1 +
 .../src/main/webapp/app/routes/yarn-services.js |   34 +
 .../src/main/webapp/app/styles/app.css          |    9 +
 .../main/webapp/app/templates/application.hbs   |   13 +-
 .../templates/components/app-attempt-table.hbs  |    8 +-
 .../templates/components/container-table.hbs    |    2 +-
 .../templates/components/em-table-html-cell.hbs |   23 +
 .../app/templates/components/timeline-view.hbs  |    8 +-
 .../webapp/app/templates/yarn-app-attempts.hbs  |    8 +-
 .../src/main/webapp/app/templates/yarn-app.hbs  |   12 +-
 .../src/main/webapp/app/templates/yarn-apps.hbs |    4 -
 .../webapp/app/templates/yarn-apps/apps.hbs     |    2 +-
 .../webapp/app/templates/yarn-apps/services.hbs |    2 +-
 .../webapp/app/templates/yarn-nodes/table.hbs   |    2 +-
 .../main/webapp/app/templates/yarn-services.hbs |   86 ++
 .../src/main/webapp/app/utils/converter.js      |   24 +
 .../components/em-table-html-cell-test.js       |   43 +
 .../tests/unit/routes/yarn-services-test.js     |   29 +
 566 files changed, 23470 insertions(+), 4541 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-common-project/hadoop-common/src/main/conf/log4j.properties
----------------------------------------------------------------------
diff --cc hadoop-common-project/hadoop-common/src/main/conf/log4j.properties
index 1289115,22a2117..fb7eadf
--- a/hadoop-common-project/hadoop-common/src/main/conf/log4j.properties
+++ b/hadoop-common-project/hadoop-common/src/main/conf/log4j.properties
@@@ -322,36 -322,16 +322,50 @@@ log4j.appender.EWMA.cleanupInterval=${y
  log4j.appender.EWMA.messageAgeLimitSeconds=${yarn.ewma.messageAgeLimitSeconds}
  log4j.appender.EWMA.maxUniqueMessages=${yarn.ewma.maxUniqueMessages}
  
++<<<<<<< HEAD
 +# Fair scheduler requests log on state dump
 
+log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.statedump=DEBUG,FSLOGGER
 
+log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.statedump=false
 +log4j.appender.FSLOGGER=org.apache.log4j.RollingFileAppender
 +log4j.appender.FSLOGGER.File=${hadoop.log.dir}/fairscheduler-statedump.log
 +log4j.appender.FSLOGGER.layout=org.apache.log4j.PatternLayout
 +log4j.appender.FSLOGGER.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
 +log4j.appender.FSLOGGER.MaxFileSize=${hadoop.log.maxfilesize}
 +log4j.appender.FSLOGGER.MaxBackupIndex=${hadoop.log.maxbackupindex}
 +
 +#
 +# Add a logger for ozone that is separate from the Datanode.
 +#
 +log4j.logger.org.apache.hadoop.ozone=DEBUG,OZONE,FILE
 +
 +# Do not log into datanode logs. Remove this line to have single log.
 +log4j.additivity.org.apache.hadoop.ozone=false
 +
 +# For development purposes, log both to console and log file.
 +log4j.appender.OZONE=org.apache.log4j.ConsoleAppender
 +log4j.appender.OZONE.Threshold=info
 +log4j.appender.OZONE.layout=org.apache.log4j.PatternLayout
 +log4j.appender.OZONE.layout.ConversionPattern=%d{ISO8601} [%t] %-5p \
 + %X{component} %X{function} %X{resource} %X{user} %X{request} - %m%n
 +
 +# Real ozone logger that writes to ozone.log
 +log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
 +log4j.appender.FILE.File=${hadoop.log.dir}/ozone.log
 +log4j.appender.FILE.Threshold=debug
 +log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 +log4j.appender.FILE.layout.ConversionPattern=%d{ISO8601} [%t] %-5p \
 +(%F:%L) %X{function} %X{resource} %X{user} %X{request} - \
 +%m%n
+ #
+ # Fair scheduler state dump
+ #
+ # Use following logger to dump the state to a separate file
+ 
+ 
#log4j.logger.org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.statedump=DEBUG,FSSTATEDUMP
+ 
#log4j.additivity.org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler.statedump=false
+ #log4j.appender.FSSTATEDUMP=org.apache.log4j.RollingFileAppender
+ #log4j.appender.FSSTATEDUMP.File=${hadoop.log.dir}/fairscheduler-statedump.log
+ #log4j.appender.FSSTATEDUMP.layout=org.apache.log4j.PatternLayout
+ #log4j.appender.FSSTATEDUMP.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
+ #log4j.appender.FSSTATEDUMP.MaxFileSize=${hadoop.log.maxfilesize}
 -#log4j.appender.FSSTATEDUMP.MaxBackupIndex=${hadoop.log.maxbackupindex}
++#log4j.appender.FSSTATEDUMP.MaxBackupIndex=${hadoop.log.maxbackupindex}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelperClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDataNodeVolumeMetrics.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestDFSAdmin.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-project/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/RemoteWasbAuthorizerImpl.java
----------------------------------------------------------------------
diff --cc 
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/RemoteWasbAuthorizerImpl.java
index 4effb0d,ea08b2b..eb16fb5
--- 
a/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/RemoteWasbAuthorizerImpl.java
+++ 
b/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azure/RemoteWasbAuthorizerImpl.java
@@@ -133,91 -122,92 +122,92 @@@ public class RemoteWasbAuthorizerImpl i
    public boolean authorize(String wasbAbsolutePath, String accessType)
        throws WasbAuthorizationException, IOException {
  
 -      try {
 +    try {
  
          /* Make an exception for the internal -RenamePending files */
 -        if 
(wasbAbsolutePath.endsWith(NativeAzureFileSystem.FolderRenamePending.SUFFIX)) {
 -          return true;
 -        }
 -
 -        setDelegationToken();
 -        URIBuilder uriBuilder = new URIBuilder(remoteAuthorizerServiceUrl);
 -        uriBuilder.setPath("/" + CHECK_AUTHORIZATION_OP);
 -        uriBuilder.addParameter(WASB_ABSOLUTE_PATH_QUERY_PARAM_NAME,
 -            wasbAbsolutePath);
 -        uriBuilder.addParameter(ACCESS_OPERATION_QUERY_PARAM_NAME,
 -            accessType);
 -        if (isSecurityEnabled && StringUtils.isNotEmpty(delegationToken)) {
 -          uriBuilder.addParameter(DELEGATION_TOKEN_QUERY_PARAM_NAME,
 -              delegationToken);
 -        }
 -
 -        String responseBody = null;
 -        UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
 -        UserGroupInformation connectUgi = ugi.getRealUser();
 -        if (connectUgi == null) {
 -          connectUgi = ugi;
 -        } else {
 -          uriBuilder.addParameter(Constants.DOAS_PARAM, 
ugi.getShortUserName());
 -        }
 -
 -        try {
 -          responseBody = connectUgi
 -              .doAs(new PrivilegedExceptionAction<String>() {
 -                @Override
 -                public String run() throws Exception {
 -                  AuthenticatedURL.Token token = null;
 -                  HttpGet httpGet = new HttpGet(uriBuilder.build());
 -                  if (isKerberosSupportEnabled && UserGroupInformation
 -                      .isSecurityEnabled() && (delegationToken == null
 -                      || delegationToken.isEmpty())) {
 -                    token = new AuthenticatedURL.Token();
 -                    final Authenticator kerberosAuthenticator = new 
KerberosDelegationTokenAuthenticator();
 -                    try {
 -                      kerberosAuthenticator
 -                          .authenticate(uriBuilder.build().toURL(), token);
 -                      Validate.isTrue(token.isSet(),
 -                          "Authenticated Token is NOT present. The request 
cannot proceed.");
 -                    } catch (AuthenticationException e){
 -                      throw new IOException("Authentication failed in check 
authorization", e);
 -                    }
 -                    if (token != null) {
 -                      httpGet.setHeader("Cookie",
 -                          AuthenticatedURL.AUTH_COOKIE + "=" + token);
 -                    }
 +      if 
(wasbAbsolutePath.endsWith(NativeAzureFileSystem.FolderRenamePending.SUFFIX)) {
 +        return true;
 +      }
 +
++      setDelegationToken();
 +      URIBuilder uriBuilder = new URIBuilder(remoteAuthorizerServiceUrl);
 +      uriBuilder.setPath("/" + CHECK_AUTHORIZATION_OP);
 +      uriBuilder.addParameter(WASB_ABSOLUTE_PATH_QUERY_PARAM_NAME,
 +          wasbAbsolutePath);
 +      uriBuilder.addParameter(ACCESS_OPERATION_QUERY_PARAM_NAME,
 +          accessType);
 +      if (isSecurityEnabled && StringUtils.isNotEmpty(delegationToken)) {
 +        uriBuilder.addParameter(DELEGATION_TOKEN_QUERY_PARAM_NAME,
 +            delegationToken);
 +      }
 +
 +      String responseBody = null;
 +      UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
 +      UserGroupInformation connectUgi = ugi.getRealUser();
 +      if (connectUgi == null) {
 +        connectUgi = ugi;
 +      } else {
 +        uriBuilder.addParameter(Constants.DOAS_PARAM, ugi.getShortUserName());
 +      }
-       if (isSecurityEnabled && !connectUgi.hasKerberosCredentials()) {
-         connectUgi = UserGroupInformation.getLoginUser();
-       }
-       connectUgi.checkTGTAndReloginFromKeytab();
 +
 +      try {
 +        responseBody = connectUgi
 +            .doAs(new PrivilegedExceptionAction<String>() {
 +              @Override
 +              public String run() throws Exception {
 +                AuthenticatedURL.Token token = null;
 +                HttpGet httpGet = new HttpGet(uriBuilder.build());
 +                if (isKerberosSupportEnabled && UserGroupInformation
 +                    .isSecurityEnabled() && (delegationToken == null
 +                    || delegationToken.isEmpty())) {
 +                  token = new AuthenticatedURL.Token();
 +                  final Authenticator kerberosAuthenticator = new 
KerberosDelegationTokenAuthenticator();
 +                  try {
 +                    kerberosAuthenticator
 +                        .authenticate(uriBuilder.build().toURL(), token);
 +                    Validate.isTrue(token.isSet(),
 +                        "Authenticated Token is NOT present. The request 
cannot proceed.");
 +                  } catch (AuthenticationException e){
 +                    throw new IOException("Authentication failed in check 
authorization", e);
 +                  }
 +                  if (token != null) {
 +                    httpGet.setHeader("Cookie",
 +                        AuthenticatedURL.AUTH_COOKIE + "=" + token);
                    }
 -                  return remoteCallHelper.makeRemoteGetRequest(httpGet);
                  }
 -              });
 -        } catch (InterruptedException e) {
 -          LOG.error("Error in check authorization", e);
 -          throw new WasbAuthorizationException("Error in check authorize", e);
 -        }
 -
 -        ObjectMapper objectMapper = new ObjectMapper();
 -        RemoteAuthorizerResponse authorizerResponse =
 -            objectMapper
 -            .readValue(responseBody, RemoteAuthorizerResponse.class);
 -
 -        if (authorizerResponse == null) {
 -          throw new WasbAuthorizationException(
 -              "RemoteAuthorizerResponse object null from remote call");
 -        } else if (authorizerResponse.getResponseCode()
 -            == REMOTE_CALL_SUCCESS_CODE) {
 -          return authorizerResponse.getAuthorizationResult();
 -        } else {
 -          throw new WasbAuthorizationException("Remote authorization"
 -              + " service encountered an error "
 -              + authorizerResponse.getResponseMessage());
 -        }
 -      } catch (URISyntaxException | WasbRemoteCallException
 -          | JsonParseException | JsonMappingException ex) {
 -        throw new WasbAuthorizationException(ex);
 +                return remoteCallHelper.makeRemoteGetRequest(httpGet);
 +              }
 +            });
 +      } catch (InterruptedException e) {
 +        LOG.error("Error in check authorization", e);
 +        throw new WasbAuthorizationException("Error in check authorize", e);
        }
 +
 +      ObjectMapper objectMapper = new ObjectMapper();
 +      RemoteAuthorizerResponse authorizerResponse =
 +          objectMapper
 +              .readValue(responseBody, RemoteAuthorizerResponse.class);
 +
 +      if (authorizerResponse == null) {
 +        throw new WasbAuthorizationException(
 +            "RemoteAuthorizerResponse object null from remote call");
 +      } else if (authorizerResponse.getResponseCode()
 +          == REMOTE_CALL_SUCCESS_CODE) {
 +        return authorizerResponse.getAuthorizationResult();
 +      } else {
 +        throw new WasbAuthorizationException("Remote authorization"
 +            + " service encountered an error "
 +            + authorizerResponse.getResponseMessage());
 +      }
 +    } catch (URISyntaxException | WasbRemoteCallException
 +        | JsonParseException | JsonMappingException ex) {
 +      throw new WasbAuthorizationException(ex);
 +    }
    }
+ 
+   private void setDelegationToken() throws IOException {
+     this.delegationToken = SecurityUtils.getDelegationTokenFromCredentials();
+   }
  }
  
  /**

http://git-wip-us.apache.org/repos/asf/hadoop/blob/86414507/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
----------------------------------------------------------------------
diff --cc 
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
index 6269f21,1b2bca3..fbb56b0
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/api/impl/TestAMRMClient.java
@@@ -1206,11 -1206,11 +1206,11 @@@ public class TestAMRMClient 
      // Should receive atleast 1 token
      Assert.assertTrue(receivedNMTokens.size() > 0
          && receivedNMTokens.size() <= nodeCount);
 -    
 +
      assertEquals(allocatedContainerCount, containersRequestedAny);
-     assertEquals(2, amClient.release.size());
+     assertEquals(2, releases.size());
      assertEquals(0, amClient.ask.size());
 -    
 +
      // need to tell the AMRMClient that we dont need these resources anymore
      amClient.removeContainerRequest(
          new ContainerRequest(capability, nodes, racks, priority));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to