Merge branch 'trunk' into HDFS-7240

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

Branch: refs/heads/HDFS-7240
Commit: 28d313d19ab186c9245d0d350aacb24bb881ba89
Parents: 8a070ee 80d33b5
Author: Anu Engineer <aengin...@apache.org>
Authored: Tue Sep 29 13:27:41 2015 -0700
Committer: Anu Engineer <aengin...@apache.org>
Committed: Tue Sep 29 13:27:41 2015 -0700

----------------------------------------------------------------------
 dev-support/test-patch.sh                       |   29 +-
 .../main/resources/assemblies/hadoop-tools.xml  |    7 +
 .../server/AuthenticationToken.java             |    3 +-
 hadoop-common-project/hadoop-common/CHANGES.txt |  250 +-
 hadoop-common-project/hadoop-common/pom.xml     |   64 +-
 .../src/main/conf/log4j.properties              |   17 +-
 .../org/apache/hadoop/conf/Configuration.java   |   20 +-
 .../hadoop/fs/CommonConfigurationKeys.java      |    3 +
 .../fs/CommonConfigurationKeysPublic.java       |   19 +
 .../org/apache/hadoop/fs/FSOutputSummer.java    |   12 +-
 .../java/org/apache/hadoop/fs/FileContext.java  |    7 +
 .../java/org/apache/hadoop/fs/FileSystem.java   |   27 +-
 .../java/org/apache/hadoop/fs/FileUtil.java     |   14 +-
 .../org/apache/hadoop/fs/FilterFileSystem.java  |    1 -
 .../main/java/org/apache/hadoop/fs/FsShell.java |   26 +-
 .../java/org/apache/hadoop/fs/FsTracer.java     |   64 +
 .../main/java/org/apache/hadoop/fs/Globber.java |   15 +-
 .../org/apache/hadoop/fs/HarFileSystem.java     |    1 -
 .../org/apache/hadoop/fs/LocalDirAllocator.java |    4 +-
 .../apache/hadoop/fs/RawLocalFileSystem.java    |    1 -
 .../main/java/org/apache/hadoop/fs/Trash.java   |    3 +-
 .../hadoop/fs/shell/CommandWithDestination.java |   41 +-
 .../apache/hadoop/fs/shell/CopyCommands.java    |   19 +-
 .../java/org/apache/hadoop/fs/shell/Delete.java |   68 +-
 .../hadoop/fs/viewfs/ChRootedFileSystem.java    |    1 -
 .../apache/hadoop/ha/ActiveStandbyElector.java  |    4 +
 .../apache/hadoop/io/retry/RetryPolicies.java   |   13 +-
 .../main/java/org/apache/hadoop/ipc/Client.java |   22 +-
 .../apache/hadoop/ipc/ProtobufRpcEngine.java    |   17 +-
 .../main/java/org/apache/hadoop/ipc/Server.java |   51 +-
 .../apache/hadoop/ipc/WritableRpcEngine.java    |   13 +-
 .../hadoop/metrics2/impl/MetricsConfig.java     |    3 +
 .../metrics2/impl/MetricsSourceAdapter.java     |   12 +-
 .../hadoop/metrics2/impl/MetricsSystemImpl.java |   20 +-
 .../apache/hadoop/metrics2/package-info.java    |    4 +-
 .../apache/hadoop/metrics2/sink/StatsDSink.java |  218 ++
 .../main/java/org/apache/hadoop/net/DNS.java    |  129 +-
 .../apache/hadoop/security/SaslPlainServer.java |    2 +-
 .../apache/hadoop/security/SecurityUtil.java    |   37 +-
 .../security/authorize/AccessControlList.java   |    2 +-
 .../apache/hadoop/tracing/SpanReceiverHost.java |  208 --
 .../org/apache/hadoop/tracing/TraceUtils.java   |   24 +-
 .../tracing/TracerConfigurationManager.java     |  100 +
 .../main/java/org/apache/hadoop/util/GSet.java  |   14 +
 .../org/apache/hadoop/util/GSetByHashMap.java   |    6 +
 .../org/apache/hadoop/util/LightWeightGSet.java |   82 +-
 .../hadoop/util/LightWeightResizableGSet.java   |  129 +
 .../java/org/apache/hadoop/util/LineReader.java |   17 +-
 .../java/org/apache/hadoop/util/ProtoUtil.java  |   13 +-
 .../apache/hadoop/util/ShutdownHookManager.java |    6 +
 .../org/apache/hadoop/util/VersionInfo.java     |    2 +-
 .../src/main/proto/RpcHeader.proto              |    5 +-
 .../src/main/resources/core-default.xml         |   65 +-
 .../src/site/markdown/FileSystemShell.md        |   15 +-
 .../hadoop-common/src/site/markdown/Metrics.md  |    2 +
 .../hadoop-common/src/site/markdown/Tracing.md  |   91 +-
 .../java/org/apache/hadoop/cli/TestCLI.java     |    2 +-
 .../org/apache/hadoop/cli/util/CLICommand.java  |    5 +-
 .../org/apache/hadoop/cli/util/CLITestCmd.java  |    6 +-
 .../apache/hadoop/conf/TestConfiguration.java   |    2 +-
 .../java/org/apache/hadoop/fs/TestFsShell.java  |   44 +-
 .../org/apache/hadoop/fs/TestFsShellCopy.java   |   46 +
 .../org/apache/hadoop/fs/TestHarFileSystem.java |    1 -
 .../apache/hadoop/fs/TestLocalDirAllocator.java |   26 +-
 .../apache/hadoop/fs/TestLocalFileSystem.java   |    1 +
 .../AbstractContractRootDirectoryTest.java      |   14 +
 .../java/org/apache/hadoop/fs/test-untar.tar    |  Bin 20480 -> 0 bytes
 .../java/org/apache/hadoop/fs/test-untar.tgz    |  Bin 2024 -> 0 bytes
 .../fs/viewfs/ViewFileSystemBaseTest.java       |    2 +-
 .../apache/hadoop/fs/viewfs/ViewFsBaseTest.java |    2 +-
 .../apache/hadoop/ha/ClientBaseWithFixes.java   |   40 +-
 .../http/TestAuthenticationSessionCookie.java   |    5 +-
 .../apache/hadoop/http/TestHttpCookieFlag.java  |    7 +-
 .../apache/hadoop/http/TestSSLHttpServer.java   |    4 +-
 .../apache/hadoop/io/retry/TestRetryProxy.java  |   13 +-
 .../java/org/apache/hadoop/ipc/TestIPC.java     |   38 +-
 .../java/org/apache/hadoop/ipc/TestRPC.java     |    4 +-
 .../java/org/apache/hadoop/ipc/TestSaslRPC.java |    9 +-
 .../metrics2/impl/TestMetricsSystemImpl.java    |   13 +
 .../hadoop/metrics2/impl/TestStatsDMetrics.java |  122 +
 .../org/apache/hadoop/net/ServerSocketUtil.java |    7 +-
 .../java/org/apache/hadoop/net/TestDNS.java     |  110 +-
 .../hadoop/security/TestSecurityUtil.java       |    2 +-
 .../authorize/TestAccessControlList.java        |    9 +
 .../hadoop/security/ssl/KeyStoreTestUtil.java   |   60 +-
 .../delegation/web/TestWebDelegationToken.java  |    7 +-
 .../apache/hadoop/tracing/SetSpanReceiver.java  |   13 +-
 .../apache/hadoop/tracing/TestTraceUtils.java   |    2 +-
 .../java/org/apache/hadoop/util/TestGSet.java   |   69 +-
 .../hadoop/util/TestLightWeightCache.java       |    6 +
 .../util/TestLightWeightResizableGSet.java      |  252 ++
 .../src/test/resources/test-untar.tar           |  Bin 0 -> 20480 bytes
 .../src/test/resources/test-untar.tgz           |  Bin 0 -> 2024 bytes
 .../src/test/resources/testConf.xml             |   22 +-
 .../dev-support/findbugsExcludeFile.xml         |   35 +
 hadoop-hdfs-project/hadoop-hdfs-client/pom.xml  |    5 +
 .../org/apache/hadoop/fs/HdfsBlockLocation.java |   47 +
 .../hadoop/hdfs/BlockMissingException.java      |   65 +
 .../org/apache/hadoop/hdfs/BlockReader.java     |  102 +
 .../apache/hadoop/hdfs/BlockReaderFactory.java  |  906 +++++
 .../apache/hadoop/hdfs/BlockReaderLocal.java    |  754 +++++
 .../hadoop/hdfs/BlockReaderLocalLegacy.java     |  738 ++++
 .../org/apache/hadoop/hdfs/BlockReaderUtil.java |   57 +
 .../org/apache/hadoop/hdfs/ClientContext.java   |  196 ++
 .../java/org/apache/hadoop/hdfs/DFSClient.java  | 3135 +++++++++++++++++
 .../hadoop/hdfs/DFSClientFaultInjector.java     |   60 +
 .../hadoop/hdfs/DFSHedgedReadMetrics.java       |   58 +
 .../hadoop/hdfs/DFSInotifyEventInputStream.java |  234 ++
 .../org/apache/hadoop/hdfs/DFSInputStream.java  | 1917 +++++++++++
 .../org/apache/hadoop/hdfs/DFSOutputStream.java |  917 +++++
 .../java/org/apache/hadoop/hdfs/DFSPacket.java  |  350 ++
 .../org/apache/hadoop/hdfs/DFSUtilClient.java   |  223 ++
 .../org/apache/hadoop/hdfs/DataStreamer.java    | 1947 +++++++++++
 .../hadoop/hdfs/DistributedFileSystem.java      | 2259 +++++++++++++
 .../apache/hadoop/hdfs/ExternalBlockReader.java |  126 +
 .../hadoop/hdfs/HdfsConfigurationLoader.java    |   44 +
 .../apache/hadoop/hdfs/KeyProviderCache.java    |  112 +
 .../hadoop/hdfs/NameNodeProxiesClient.java      |  366 ++
 .../java/org/apache/hadoop/hdfs/PeerCache.java  |  291 ++
 .../apache/hadoop/hdfs/RemoteBlockReader.java   |  514 +++
 .../apache/hadoop/hdfs/RemoteBlockReader2.java  |  483 +++
 .../apache/hadoop/hdfs/RemotePeerFactory.java   |   43 +
 .../org/apache/hadoop/hdfs/ReplicaAccessor.java |   10 +-
 .../hadoop/hdfs/ReplicaAccessorBuilder.java     |    3 +
 .../hdfs/UnknownCipherSuiteException.java       |   35 +
 .../UnknownCryptoProtocolVersionException.java  |   38 +
 .../org/apache/hadoop/hdfs/XAttrHelper.java     |  174 +
 .../hadoop/hdfs/client/BlockReportOptions.java  |   59 +
 .../hdfs/client/HdfsClientConfigKeys.java       |   38 +-
 .../hadoop/hdfs/client/HdfsDataInputStream.java |  113 +
 .../hdfs/client/HdfsDataOutputStream.java       |  112 +
 .../client/impl/CorruptFileBlockIterator.java   |  105 +
 .../hadoop/hdfs/client/impl/DfsClientConf.java  |   64 +-
 .../hadoop/hdfs/client/impl/LeaseRenewer.java   |  524 +++
 .../hdfs/inotify/MissingEventsException.java    |   54 +
 .../apache/hadoop/hdfs/net/BasicInetPeer.java   |  133 +
 .../apache/hadoop/hdfs/net/EncryptedPeer.java   |  142 +
 .../org/apache/hadoop/hdfs/net/NioInetPeer.java |  136 +
 .../java/org/apache/hadoop/hdfs/net/Peer.java   |    8 +-
 .../hadoop/hdfs/protocol/AclException.java      |   39 +
 .../hdfs/protocol/BlockLocalPathInfo.java       |   70 +
 .../hdfs/protocol/CacheDirectiveIterator.java   |  129 +
 .../hadoop/hdfs/protocol/CachePoolIterator.java |   62 +
 .../hdfs/protocol/ClientDatanodeProtocol.java   |  159 +
 .../hadoop/hdfs/protocol/DatanodeInfo.java      |   47 +-
 .../hdfs/protocol/EncryptionZoneIterator.java   |   62 +
 .../hadoop/hdfs/protocol/HdfsConstants.java     |   31 +
 .../hdfs/protocol/HdfsLocatedFileStatus.java    |   83 +
 .../QuotaByStorageTypeExceededException.java    |   56 +
 .../hdfs/protocol/UnresolvedPathException.java  |   87 +
 .../datatransfer/DataTransferProtoUtil.java     |   43 +-
 .../protocol/datatransfer/IOStreamPair.java     |   37 +
 .../InvalidEncryptionKeyException.java          |   40 +
 .../protocol/datatransfer/PacketHeader.java     |  214 ++
 .../protocol/datatransfer/PacketReceiver.java   |  310 ++
 .../hdfs/protocol/datatransfer/PipelineAck.java |  243 ++
 .../datatransfer/ReplaceDatanodeOnFailure.java  |  200 ++
 .../hdfs/protocol/datatransfer/Sender.java      |   22 +-
 .../datatransfer/TrustedChannelResolver.java    |   81 +
 .../sasl/DataEncryptionKeyFactory.java          |   38 +
 .../datatransfer/sasl/DataTransferSaslUtil.java |  519 +++
 .../sasl/SaslDataTransferClient.java            |  498 +++
 .../datatransfer/sasl/SaslParticipant.java      |  210 ++
 .../SaslResponseWithNegotiatedCipherOption.java |   33 +
 .../protocolPB/ClientDatanodeProtocolPB.java    |   37 +
 .../ClientDatanodeProtocolTranslatorPB.java     |  343 ++
 .../protocolPB/ClientNamenodeProtocolPB.java    |   46 +
 .../ClientNamenodeProtocolTranslatorPB.java     | 1531 +++++++++
 .../hadoop/hdfs/protocolPB/PBHelperClient.java  | 2093 +++++++++++-
 .../token/block/BlockTokenSelector.java         |   48 +
 .../server/datanode/BlockMetadataHeader.java    |  209 ++
 .../datanode/ReplicaNotFoundException.java      |   53 +
 .../namenode/RetryStartFileException.java       |   36 +
 .../ha/AbstractNNFailoverProxyProvider.java     |   55 +
 .../ha/WrappedFailoverProxyProvider.java        |   71 +
 .../hadoop/hdfs/shortcircuit/ClientMmap.java    |   75 +
 .../hdfs/shortcircuit/DomainSocketFactory.java  |  196 ++
 .../hdfs/shortcircuit/ShortCircuitCache.java    | 1066 ++++++
 .../hdfs/shortcircuit/ShortCircuitReplica.java  |  352 ++
 .../shortcircuit/ShortCircuitReplicaInfo.java   |   64 +
 .../hdfs/util/ByteBufferOutputStream.java       |   49 +
 .../apache/hadoop/hdfs/util/IOUtilsClient.java  |   46 +
 .../apache/hadoop/hdfs/util/LongBitFormat.java  |   71 +
 .../hadoop/hdfs/web/ByteRangeInputStream.java   |   11 +
 .../apache/hadoop/hdfs/web/JsonUtilClient.java  |    3 +-
 .../hadoop/hdfs/web/URLConnectionFactory.java   |   30 +-
 .../hadoop/hdfs/web/WebHdfsFileSystem.java      |   16 +-
 .../hdfs/web/oauth2/AccessTokenProvider.java    |   66 +
 .../hdfs/web/oauth2/AccessTokenTimer.java       |  103 +
 .../ConfCredentialBasedAccessTokenProvider.java |   62 +
 ...onfRefreshTokenBasedAccessTokenProvider.java |  146 +
 .../CredentialBasedAccessTokenProvider.java     |  135 +
 .../oauth2/OAuth2ConnectionConfigurator.java    |   79 +
 .../hadoop/hdfs/web/oauth2/OAuth2Constants.java |   46 +
 .../apache/hadoop/hdfs/web/oauth2/Utils.java    |   63 +
 .../hadoop/hdfs/web/oauth2/package-info.java    |   26 +
 .../src/main/proto/ClientDatanodeProtocol.proto |   16 +
 .../src/main/proto/hdfs.proto                   |  203 +-
 .../services/org.apache.hadoop.fs.FileSystem    |   18 +
 .../hadoop/hdfs/nfs/mount/RpcProgramMountd.java |    4 +-
 .../hadoop/hdfs/nfs/nfs3/DFSClientCache.java    |    4 +-
 .../hadoop/hdfs/nfs/nfs3/OffsetRange.java       |    4 +
 .../hadoop/hdfs/nfs/nfs3/OpenFileCtx.java       |  141 +-
 .../apache/hadoop/hdfs/nfs/nfs3/WriteCtx.java   |   82 +-
 .../apache/hadoop/hdfs/nfs/nfs3/TestWrites.java |   99 +-
 hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt     |  544 ++-
 .../dev-support/findbugsExcludeFile.xml         |   29 -
 hadoop-hdfs-project/hadoop-hdfs/pom.xml         |    9 +-
 .../hadoop-hdfs/src/contrib/bkjournal/pom.xml   |    1 +
 .../bkjournal/BookKeeperEditLogInputStream.java |    2 +-
 .../bkjournal/src/main/proto/bkjournal.proto    |    1 +
 .../hdfs/server/namenode/FSEditLogTestUtil.java |    3 +-
 .../main/java/org/apache/hadoop/fs/Hdfs.java    |    7 +-
 .../org/apache/hadoop/fs/HdfsBlockLocation.java |   47 -
 .../java/org/apache/hadoop/fs/SWebHdfs.java     |   15 +-
 .../main/java/org/apache/hadoop/fs/WebHdfs.java |   14 +-
 .../hadoop/hdfs/BlockMissingException.java      |   65 -
 .../org/apache/hadoop/hdfs/BlockReader.java     |  102 -
 .../apache/hadoop/hdfs/BlockReaderFactory.java  |  894 -----
 .../apache/hadoop/hdfs/BlockReaderLocal.java    |  741 ----
 .../hadoop/hdfs/BlockReaderLocalLegacy.java     |  735 ----
 .../org/apache/hadoop/hdfs/BlockReaderUtil.java |   57 -
 .../org/apache/hadoop/hdfs/ClientContext.java   |  195 --
 .../java/org/apache/hadoop/hdfs/DFSClient.java  | 3167 ------------------
 .../hadoop/hdfs/DFSClientFaultInjector.java     |   57 -
 .../org/apache/hadoop/hdfs/DFSConfigKeys.java   |  104 +-
 .../hadoop/hdfs/DFSHedgedReadMetrics.java       |   58 -
 .../hadoop/hdfs/DFSInotifyEventInputStream.java |  239 --
 .../org/apache/hadoop/hdfs/DFSInputStream.java  | 1915 -----------
 .../org/apache/hadoop/hdfs/DFSOutputStream.java |  911 -----
 .../java/org/apache/hadoop/hdfs/DFSPacket.java  |  345 --
 .../java/org/apache/hadoop/hdfs/DFSUtil.java    |  101 +-
 .../org/apache/hadoop/hdfs/DataStreamer.java    | 1909 -----------
 .../hadoop/hdfs/DistributedFileSystem.java      | 2262 -------------
 .../apache/hadoop/hdfs/ExternalBlockReader.java |  120 -
 .../java/org/apache/hadoop/hdfs/HAUtil.java     |    9 +-
 .../apache/hadoop/hdfs/HdfsConfiguration.java   |   11 +-
 .../apache/hadoop/hdfs/KeyProviderCache.java    |  111 -
 .../org/apache/hadoop/hdfs/NameNodeProxies.java |  278 +-
 .../java/org/apache/hadoop/hdfs/PeerCache.java  |  290 --
 .../apache/hadoop/hdfs/RemoteBlockReader.java   |  508 ---
 .../apache/hadoop/hdfs/RemoteBlockReader2.java  |  477 ---
 .../apache/hadoop/hdfs/RemotePeerFactory.java   |   43 -
 .../hdfs/UnknownCipherSuiteException.java       |   35 -
 .../UnknownCryptoProtocolVersionException.java  |   38 -
 .../org/apache/hadoop/hdfs/XAttrHelper.java     |  174 -
 .../hadoop/hdfs/client/BlockReportOptions.java  |   59 -
 .../hadoop/hdfs/client/HdfsDataInputStream.java |  113 -
 .../hdfs/client/HdfsDataOutputStream.java       |  112 -
 .../client/impl/CorruptFileBlockIterator.java   |  105 -
 .../hadoop/hdfs/client/impl/LeaseRenewer.java   |  524 ---
 .../hdfs/inotify/MissingEventsException.java    |   54 -
 .../apache/hadoop/hdfs/net/BasicInetPeer.java   |  133 -
 .../hadoop/hdfs/net/DomainPeerServer.java       |    5 +
 .../apache/hadoop/hdfs/net/EncryptedPeer.java   |  142 -
 .../org/apache/hadoop/hdfs/net/NioInetPeer.java |  136 -
 .../org/apache/hadoop/hdfs/net/PeerServer.java  |    9 +-
 .../apache/hadoop/hdfs/net/TcpPeerServer.java   |   70 +-
 .../hadoop/hdfs/protocol/AclException.java      |   39 -
 .../hdfs/protocol/BlockLocalPathInfo.java       |   70 -
 .../hdfs/protocol/CacheDirectiveIterator.java   |  130 -
 .../hadoop/hdfs/protocol/CachePoolIterator.java |   63 -
 .../hdfs/protocol/ClientDatanodeProtocol.java   |  152 -
 .../hdfs/protocol/EncryptionZoneIterator.java   |   64 -
 .../hdfs/protocol/HdfsLocatedFileStatus.java    |   83 -
 .../hadoop/hdfs/protocol/LayoutVersion.java     |    2 +-
 .../QuotaByStorageTypeExceededException.java    |   56 -
 .../hdfs/protocol/UnresolvedPathException.java  |   87 -
 .../protocol/datatransfer/IOStreamPair.java     |   37 -
 .../InvalidEncryptionKeyException.java          |   40 -
 .../protocol/datatransfer/PacketHeader.java     |  214 --
 .../protocol/datatransfer/PacketReceiver.java   |  310 --
 .../hdfs/protocol/datatransfer/PipelineAck.java |  274 --
 .../hdfs/protocol/datatransfer/Receiver.java    |   83 +-
 .../datatransfer/ReplaceDatanodeOnFailure.java  |  200 --
 .../datatransfer/TrustedChannelResolver.java    |   81 -
 .../sasl/DataEncryptionKeyFactory.java          |   38 -
 .../datatransfer/sasl/DataTransferSaslUtil.java |  519 ---
 .../sasl/SaslDataTransferClient.java            |  498 ---
 .../sasl/SaslDataTransferServer.java            |    2 +-
 .../datatransfer/sasl/SaslParticipant.java      |  210 --
 .../SaslResponseWithNegotiatedCipherOption.java |   33 -
 .../protocolPB/ClientDatanodeProtocolPB.java    |   37 -
 ...tDatanodeProtocolServerSideTranslatorPB.java |   26 +-
 .../ClientDatanodeProtocolTranslatorPB.java     |  326 --
 .../protocolPB/ClientNamenodeProtocolPB.java    |   46 -
 ...tNamenodeProtocolServerSideTranslatorPB.java |  142 +-
 .../ClientNamenodeProtocolTranslatorPB.java     | 1531 ---------
 .../DatanodeProtocolClientSideTranslatorPB.java |   12 +-
 .../DatanodeProtocolServerSideTranslatorPB.java |   18 +-
 ...rDatanodeProtocolServerSideTranslatorPB.java |    4 +-
 .../protocolPB/JournalProtocolTranslatorPB.java |    2 +-
 .../NamenodeProtocolServerSideTranslatorPB.java |    7 +-
 .../NamenodeProtocolTranslatorPB.java           |    5 +-
 .../apache/hadoop/hdfs/protocolPB/PBHelper.java | 2194 +-----------
 .../QJournalProtocolTranslatorPB.java           |    3 +-
 .../hadoop/hdfs/qjournal/server/Journal.java    |   40 +-
 .../hdfs/qjournal/server/JournalMetrics.java    |    7 +-
 .../hdfs/qjournal/server/JournalNode.java       |   13 +-
 .../qjournal/server/JournalNodeRpcServer.java   |    1 +
 .../token/block/BlockTokenSelector.java         |   48 -
 .../hadoop/hdfs/server/balancer/Balancer.java   |  170 +-
 .../server/balancer/BalancerParameters.java     |  168 +
 .../hadoop/hdfs/server/balancer/Dispatcher.java |    3 +-
 .../server/blockmanagement/BlockCollection.java |    5 +
 .../hdfs/server/blockmanagement/BlockInfo.java  |   44 +-
 .../blockmanagement/BlockInfoContiguous.java    |   15 -
 .../server/blockmanagement/BlockManager.java    |  534 ++-
 .../BlockPlacementPolicyDefault.java            |  147 +-
 .../BlockPlacementPolicyWithNodeGroup.java      |   14 +-
 .../BlockStoragePolicySuite.java                |   13 +-
 .../blockmanagement/BlockToMarkCorrupt.java     |   87 +
 .../hdfs/server/blockmanagement/BlocksMap.java  |   26 +-
 .../blockmanagement/DatanodeDescriptor.java     |   35 +-
 .../server/blockmanagement/DatanodeManager.java |   58 +-
 .../blockmanagement/DecommissionManager.java    |    9 +-
 .../blockmanagement/HeartbeatManager.java       |   30 +-
 .../server/blockmanagement/HostFileManager.java |   19 +
 .../server/blockmanagement/ReplicationWork.java |   87 +
 .../SequentialBlockIdGenerator.java             |    5 +-
 .../hdfs/server/common/HdfsServerConstants.java |   33 +-
 .../hdfs/server/common/MetricsLoggerTask.java   |  174 +
 .../hdfs/server/datanode/BPOfferService.java    |    3 +-
 .../hdfs/server/datanode/BPServiceActor.java    |    7 +-
 .../server/datanode/BlockMetadataHeader.java    |  211 --
 .../hdfs/server/datanode/BlockReceiver.java     |   11 +-
 .../hdfs/server/datanode/BlockSender.java       |   13 +-
 .../hadoop/hdfs/server/datanode/DNConf.java     |   26 +-
 .../hadoop/hdfs/server/datanode/DataNode.java   |  203 +-
 .../hdfs/server/datanode/DataNodeMXBean.java    |    9 +-
 .../hdfs/server/datanode/DataXceiver.java       |   27 +-
 .../hdfs/server/datanode/DataXceiverServer.java |    7 +-
 .../hdfs/server/datanode/DirectoryScanner.java  |  338 +-
 .../hdfs/server/datanode/FinalizedReplica.java  |   15 +-
 .../hdfs/server/datanode/ReplicaInfo.java       |  109 +-
 .../datanode/ReplicaNotFoundException.java      |   53 -
 .../server/datanode/ReplicaUnderRecovery.java   |   10 -
 .../datanode/ReplicaWaitingToBeRecovered.java   |   15 +-
 .../server/datanode/fsdataset/FsVolumeSpi.java  |    8 +-
 .../datanode/fsdataset/impl/BlockPoolSlice.java |   11 +-
 .../datanode/fsdataset/impl/FsDatasetImpl.java  |   41 +-
 .../datanode/fsdataset/impl/FsVolumeImpl.java   |   72 +-
 .../impl/RamDiskAsyncLazyPersistService.java    |   16 +-
 .../datanode/fsdataset/impl/ReplicaMap.java     |   38 +-
 .../hdfs/server/namenode/BackupImage.java       |    8 +-
 .../hadoop/hdfs/server/namenode/BackupNode.java |    3 +-
 .../hdfs/server/namenode/CacheManager.java      |    4 +-
 .../hadoop/hdfs/server/namenode/DfsServlet.java |    3 +-
 .../namenode/EditLogBackupInputStream.java      |    2 +-
 .../server/namenode/EditLogFileInputStream.java |   62 +-
 .../server/namenode/EncryptionZoneManager.java  |    4 +-
 .../hdfs/server/namenode/FSDirConcatOp.java     |    2 +-
 .../hdfs/server/namenode/FSDirDeleteOp.java     |   40 +
 .../server/namenode/FSDirEncryptionZoneOp.java  |  303 ++
 .../server/namenode/FSDirStatAndListingOp.java  |   30 +-
 .../hdfs/server/namenode/FSDirWriteFileOp.java  |    6 +-
 .../hdfs/server/namenode/FSDirXAttrOp.java      |    9 +-
 .../hdfs/server/namenode/FSDirectory.java       |  344 +-
 .../hadoop/hdfs/server/namenode/FSEditLog.java  |   12 +-
 .../hdfs/server/namenode/FSEditLogLoader.java   |   65 +-
 .../hdfs/server/namenode/FSEditLogOp.java       |  374 ++-
 .../hadoop/hdfs/server/namenode/FSImage.java    |   80 +-
 .../server/namenode/FSImageFormatPBINode.java   |    7 +-
 .../hdfs/server/namenode/FSNamesystem.java      |  254 +-
 .../server/namenode/FSPermissionChecker.java    |   41 +-
 .../server/namenode/FileJournalManager.java     |   47 +-
 .../hadoop/hdfs/server/namenode/INode.java      |   14 +-
 .../hdfs/server/namenode/INodeDirectory.java    |   14 +-
 .../hadoop/hdfs/server/namenode/INodeFile.java  |   27 +-
 .../hadoop/hdfs/server/namenode/INodeId.java    |    1 +
 .../hadoop/hdfs/server/namenode/INodeMap.java   |    2 +-
 .../hdfs/server/namenode/INodeReference.java    |   10 +-
 .../hdfs/server/namenode/INodeSymlink.java      |    2 +-
 .../hdfs/server/namenode/ImageServlet.java      |    5 +-
 .../hdfs/server/namenode/LeaseManager.java      |   11 +-
 .../hadoop/hdfs/server/namenode/NameNode.java   |  217 +-
 .../hdfs/server/namenode/NameNodeMXBean.java    |    7 +-
 .../hdfs/server/namenode/NameNodeRpcServer.java |   10 +-
 .../hdfs/server/namenode/NamenodeFsck.java      |   18 +-
 .../hadoop/hdfs/server/namenode/Namesystem.java |    5 +
 .../hdfs/server/namenode/QuotaCounts.java       |   10 +-
 .../namenode/RetryStartFileException.java       |   36 -
 .../hadoop/hdfs/server/namenode/SafeMode.java   |    3 -
 .../hdfs/server/namenode/SecondaryNameNode.java |    2 +-
 .../hdfs/server/namenode/TransferFsImage.java   |    4 +-
 .../hdfs/server/namenode/XAttrFormat.java       |   14 +-
 .../ha/AbstractNNFailoverProxyProvider.java     |   51 -
 .../server/namenode/ha/BootstrapStandby.java    |    5 +-
 .../ha/ConfiguredFailoverProxyProvider.java     |    2 +-
 .../hdfs/server/namenode/ha/EditLogTailer.java  |    2 +-
 .../namenode/ha/IPFailoverProxyProvider.java    |    4 +-
 .../ha/WrappedFailoverProxyProvider.java        |   80 -
 .../snapshot/DirectorySnapshottableFeature.java |   16 +-
 .../snapshot/DirectoryWithSnapshotFeature.java  |    5 +-
 .../snapshot/FSImageFormatPBSnapshot.java       |    6 +-
 .../hdfs/server/namenode/snapshot/Snapshot.java |    3 +-
 .../hadoop/hdfs/shortcircuit/ClientMmap.java    |   75 -
 .../hdfs/shortcircuit/DomainSocketFactory.java  |  194 --
 .../hdfs/shortcircuit/ShortCircuitCache.java    | 1068 ------
 .../hdfs/shortcircuit/ShortCircuitReplica.java  |  349 --
 .../shortcircuit/ShortCircuitReplicaInfo.java   |   64 -
 .../org/apache/hadoop/hdfs/tools/DFSAdmin.java  |   52 +-
 .../hdfs/tools/DFSZKFailoverController.java     |    3 +-
 .../org/apache/hadoop/hdfs/tools/GetGroups.java |    4 +-
 .../hadoop/hdfs/tools/NNHAServiceTarget.java    |   19 +-
 .../hdfs/util/ByteBufferOutputStream.java       |   49 -
 .../apache/hadoop/hdfs/util/LongBitFormat.java  |   71 -
 .../org/apache/hadoop/hdfs/web/JsonUtil.java    |    3 +
 .../StorageContainerManager.java                |    5 +-
 .../storagecontainer/StorageContainerMap.java   |    6 +
 .../StorageContainerNameService.java            |   16 +-
 .../main/native/fuse-dfs/test/TestFuseDFS.java  |    4 +-
 .../src/main/proto/DatanodeProtocol.proto       |    1 +
 .../hadoop-hdfs/src/main/proto/HdfsServer.proto |  209 ++
 .../src/main/proto/InterDatanodeProtocol.proto  |    1 +
 .../src/main/proto/JournalProtocol.proto        |    1 +
 .../src/main/proto/NamenodeProtocol.proto       |    1 +
 .../src/main/proto/QJournalProtocol.proto       |    1 +
 .../services/org.apache.hadoop.fs.FileSystem    |   18 -
 .../src/main/resources/hdfs-default.xml         |  110 +-
 .../src/main/webapps/hdfs/dfshealth.html        |    7 +-
 .../src/main/webapps/hdfs/dfshealth.js          |    9 +-
 .../src/main/webapps/hdfs/explorer.html         |   76 +-
 .../src/main/webapps/hdfs/explorer.js           |   89 +-
 .../src/main/webapps/static/dfs-dust.js         |   12 +-
 .../src/main/webapps/static/hadoop.css          |   22 +
 .../src/site/markdown/ArchivalStorage.md        |    4 +-
 .../hadoop-hdfs/src/site/markdown/Federation.md |    2 +-
 .../src/site/markdown/HDFSCommands.md           |    6 +-
 .../hadoop-hdfs/src/site/markdown/HdfsDesign.md |    6 +-
 .../src/site/markdown/HdfsRollingUpgrade.md     |  293 ++
 .../src/site/markdown/HdfsSnapshots.md          |  301 ++
 .../hadoop-hdfs/src/site/markdown/WebHDFS.md    |   25 +
 .../site/resources/images/LazyPersistWrites.png |  Bin 107161 -> 90224 bytes
 .../src/site/xdoc/HdfsRollingUpgrade.xml        |  329 --
 .../hadoop-hdfs/src/site/xdoc/HdfsSnapshots.xml |  303 --
 .../org/apache/hadoop/hdfs/TestFiPipelines.java |   17 +-
 .../datanode/TestFiDataTransferProtocol.java    |    4 +-
 .../datanode/TestFiDataTransferProtocol2.java   |    8 +-
 .../org/apache/hadoop/cli/CLITestCmdDFS.java    |    8 +-
 .../java/org/apache/hadoop/cli/TestAclCLI.java  |    2 +-
 .../apache/hadoop/cli/TestCacheAdminCLI.java    |    7 +-
 .../apache/hadoop/cli/TestCryptoAdminCLI.java   |    6 +-
 .../org/apache/hadoop/cli/TestDeleteCLI.java    |   92 +
 .../java/org/apache/hadoop/cli/TestHDFSCLI.java |    4 +-
 .../org/apache/hadoop/cli/TestXAttrCLI.java     |    2 +-
 .../apache/hadoop/fs/TestFcHdfsSetUMask.java    |    4 +-
 .../TestSWebHdfsFileContextMainOperations.java  |    5 +
 .../TestWebHdfsFileContextMainOperations.java   |    5 +
 .../hadoop/fs/permission/TestStickyBit.java     |    3 +
 .../apache/hadoop/hdfs/BenchmarkThroughput.java |    3 +-
 .../apache/hadoop/hdfs/BlockReaderTestUtil.java |    5 +-
 .../org/apache/hadoop/hdfs/DFSTestUtil.java     |   25 +-
 .../org/apache/hadoop/hdfs/MiniDFSCluster.java  |    4 +-
 .../hdfs/MiniDFSClusterWithNodeGroup.java       |    2 +-
 .../hadoop/hdfs/TestAppendSnapshotTruncate.java |    3 +-
 .../hadoop/hdfs/TestBalancerBandwidth.java      |   55 +-
 .../hadoop/hdfs/TestBlockReaderLocal.java       |   32 +-
 .../hadoop/hdfs/TestBlockReaderLocalLegacy.java |    2 +-
 .../hadoop/hdfs/TestBlockStoragePolicy.java     |   25 +-
 .../hdfs/TestClientBlockVerification.java       |    4 +-
 .../TestClientProtocolForPipelineRecovery.java  |    6 +-
 .../apache/hadoop/hdfs/TestCrcCorruption.java   |    2 +-
 .../hadoop/hdfs/TestDFSClientFailover.java      |    5 +-
 .../hadoop/hdfs/TestDFSClientRetries.java       |    5 +-
 .../hdfs/TestDFSInotifyEventInputStream.java    |    2 +-
 .../apache/hadoop/hdfs/TestDFSOutputStream.java |    5 +-
 .../org/apache/hadoop/hdfs/TestDFSPacket.java   |   25 +-
 .../apache/hadoop/hdfs/TestDFSPermission.java   |   42 +-
 .../org/apache/hadoop/hdfs/TestDFSShell.java    |   69 +
 .../hadoop/hdfs/TestDFSShellGenericOptions.java |   13 +-
 .../org/apache/hadoop/hdfs/TestDFSUpgrade.java  |   78 +-
 .../hadoop/hdfs/TestDFSUpgradeFromImage.java    |  107 +-
 .../org/apache/hadoop/hdfs/TestDFSUtil.java     |    8 +-
 .../hadoop/hdfs/TestDataTransferProtocol.java   |    2 +-
 .../apache/hadoop/hdfs/TestDecommission.java    |   58 +-
 .../hadoop/hdfs/TestDefaultNameNodePort.java    |   30 +-
 .../hadoop/hdfs/TestDistributedFileSystem.java  |   57 +-
 .../hadoop/hdfs/TestEncryptedTransfer.java      |    4 +-
 .../hadoop/hdfs/TestExternalBlockReader.java    |   43 +-
 .../org/apache/hadoop/hdfs/TestFileAppend.java  |   72 -
 .../org/apache/hadoop/hdfs/TestFileAppend4.java |    4 +-
 .../hadoop/hdfs/TestFileConcurrentReader.java   |    9 +-
 .../apache/hadoop/hdfs/TestFileCreation.java    |   12 +-
 .../hadoop/hdfs/TestFileCreationClient.java     |   11 +-
 .../org/apache/hadoop/hdfs/TestFileStatus.java  |   12 +-
 .../org/apache/hadoop/hdfs/TestGetBlocks.java   |    7 +-
 .../java/org/apache/hadoop/hdfs/TestHFlush.java |    6 +-
 .../org/apache/hadoop/hdfs/TestLargeBlock.java  |   10 +-
 .../java/org/apache/hadoop/hdfs/TestLease.java  |    8 +-
 .../apache/hadoop/hdfs/TestLeaseRecovery2.java  |   13 +-
 .../apache/hadoop/hdfs/TestListFilesInDFS.java  |    4 +-
 .../hadoop/hdfs/TestListFilesInFileContext.java |    4 +-
 .../org/apache/hadoop/hdfs/TestLocalDFS.java    |    7 +-
 .../apache/hadoop/hdfs/TestPersistBlocks.java   |   10 +-
 .../java/org/apache/hadoop/hdfs/TestPread.java  |   10 +-
 .../java/org/apache/hadoop/hdfs/TestQuota.java  |   32 +
 .../hadoop/hdfs/TestReadWhileWriting.java       |    7 +-
 .../sasl/SaslDataTransferTestCase.java          |    2 +-
 .../datatransfer/sasl/TestSaslDataTransfer.java |    2 +-
 .../hadoop/hdfs/protocolPB/TestPBHelper.java    |   60 +-
 .../hdfs/qjournal/TestSecureNNWithQJM.java      |    2 +-
 .../hdfs/qjournal/client/TestQJMWithFaults.java |    3 +-
 .../client/TestQuorumJournalManager.java        |    3 +-
 .../client/TestQuorumJournalManagerUnit.java    |    3 +-
 .../hdfs/qjournal/server/TestJournalNode.java   |    9 +
 .../TestClientProtocolWithDelegationToken.java  |   12 +-
 .../hdfs/security/TestDelegationToken.java      |    4 +-
 .../security/token/block/TestBlockToken.java    |   22 +-
 .../hdfs/server/balancer/TestBalancer.java      |  200 +-
 .../balancer/TestBalancerWithHANameNodes.java   |    8 +-
 .../TestBalancerWithMultipleNameNodes.java      |  181 +-
 .../balancer/TestBalancerWithNodeGroup.java     |    4 +-
 .../server/blockmanagement/TestBlockInfo.java   |   11 +-
 .../blockmanagement/TestBlockManager.java       |   15 +
 .../blockmanagement/TestBlockTokenWithDFS.java  |   10 +-
 .../TestBlocksWithNotEnoughRacks.java           |    6 +-
 .../blockmanagement/TestDatanodeManager.java    |  103 +-
 .../blockmanagement/TestHeartbeatHandling.java  |   27 +
 .../blockmanagement/TestHostFileManager.java    |    7 +-
 .../TestPendingInvalidateBlock.java             |    9 +-
 .../blockmanagement/TestReplicationPolicy.java  |   43 +-
 .../TestReplicationPolicyWithNodeGroup.java     |   19 +
 .../hdfs/server/datanode/DataNodeTestUtils.java |   86 +-
 .../server/datanode/SimulatedFSDataset.java     |    2 +-
 .../server/datanode/TestBPOfferService.java     |    3 +-
 .../hdfs/server/datanode/TestBlockRecovery.java |    5 +-
 .../server/datanode/TestCachingStrategy.java    |   11 +-
 .../server/datanode/TestDataNodeMXBean.java     |    6 +
 .../datanode/TestDataNodeMetricsLogger.java     |  224 ++
 .../datanode/TestDataNodeRollingUpgrade.java    |    8 +-
 .../TestDataNodeTransferSocketSize.java         |   71 +
 .../datanode/TestDataNodeVolumeFailure.java     |    6 +-
 .../TestDataNodeVolumeFailureReporting.java     |    5 +-
 .../TestDatanodeProtocolRetryPolicy.java        |    3 +-
 .../server/datanode/TestDirectoryScanner.java   |  236 +-
 .../hdfs/server/datanode/TestTransferRbw.java   |    4 +-
 .../datanode/extdataset/ExternalVolumeImpl.java |    2 +-
 .../fsdataset/impl/FsDatasetTestUtil.java       |    6 -
 .../fsdataset/impl/LazyPersistTestCase.java     |   16 +-
 .../fsdataset/impl/TestDatanodeRestart.java     |   72 -
 .../datanode/fsdataset/impl/TestLazyWriter.java |    1 +
 .../fsdataset/impl/TestRbwSpaceReservation.java |  452 ---
 .../fsdataset/impl/TestSpaceReservation.java    |  575 ++++
 .../fsdataset/impl/TestWriteToReplica.java      |    4 +-
 .../hdfs/server/mover/TestStorageMover.java     |   13 +-
 .../server/namenode/NNThroughputBenchmark.java  |    3 +-
 .../hdfs/server/namenode/NameNodeAdapter.java   |    2 +-
 .../server/namenode/TestAuditLogAtDebug.java    |    4 +-
 .../hdfs/server/namenode/TestBackupNode.java    |    5 +-
 .../server/namenode/TestCacheDirectives.java    |    4 +-
 .../TestCheckPointForSecurityTokens.java        |    4 +-
 .../hdfs/server/namenode/TestCheckpoint.java    |    3 +-
 .../TestCommitBlockSynchronization.java         |    9 +-
 .../namenode/TestDiskspaceQuotaUpdate.java      |   61 +
 .../hdfs/server/namenode/TestEditLog.java       |  108 +-
 .../namenode/TestEditLogFileInputStream.java    |   80 +
 .../hdfs/server/namenode/TestEditLogRace.java   |    4 +-
 .../server/namenode/TestFSEditLogLoader.java    |   19 +-
 .../namenode/TestFSImageWithSnapshot.java       |    9 +-
 .../hdfs/server/namenode/TestFSNamesystem.java  |   25 +-
 .../namenode/TestFavoredNodesEndToEnd.java      |    5 +-
 .../hdfs/server/namenode/TestFileTruncate.java  |   10 +-
 .../hadoop/hdfs/server/namenode/TestFsck.java   |   62 +-
 .../hdfs/server/namenode/TestINodeFile.java     |    4 +-
 .../namenode/TestListCorruptFileBlocks.java     |    3 +-
 .../hdfs/server/namenode/TestMetaSave.java      |   11 +
 .../server/namenode/TestNameNodeMXBean.java     |   23 +-
 .../namenode/TestNameNodeMetricsLogger.java     |    5 +-
 .../namenode/TestNameNodeRetryCacheMetrics.java |    4 +-
 .../namenode/TestProtectedDirectories.java      |  373 +++
 .../hdfs/server/namenode/TestSaveNamespace.java |    3 +-
 .../server/namenode/TestStorageRestore.java     |    3 +-
 .../hdfs/server/namenode/TestXAttrFeature.java  |   12 +
 .../ha/TestDNFencingWithReplication.java        |   11 +-
 .../server/namenode/ha/TestEditLogTailer.java   |    5 +-
 .../namenode/ha/TestFailureToReadEdits.java     |    3 +-
 .../hdfs/server/namenode/ha/TestHAFsck.java     |    5 +-
 .../namenode/ha/TestHAStateTransitions.java     |    3 +-
 .../ha/TestLossyRetryInvocationHandler.java     |    8 +-
 .../namenode/ha/TestRetryCacheWithHA.java       |    4 +-
 .../namenode/metrics/TestNameNodeMetrics.java   |    6 +-
 .../TestGetContentSummaryWithSnapshot.java      |  126 +
 ...tINodeFileUnderConstructionWithSnapshot.java |   12 +-
 .../server/namenode/snapshot/TestSnapshot.java  |    3 +-
 .../snapshot/TestSnapshotBlocksMap.java         |   30 +-
 .../namenode/snapshot/TestSnapshotDeletion.java |    9 +-
 .../shortcircuit/TestShortCircuitCache.java     |    5 +-
 .../shortcircuit/TestShortCircuitLocalRead.java |  104 +-
 .../hadoop/hdfs/tools/TestDFSAdminWithHA.java   |    7 +
 .../hdfs/tools/TestDFSHAAdminMiniCluster.java   |    4 +-
 .../hadoop/hdfs/util/TestByteArrayManager.java  |   11 +-
 .../hdfs/web/TestByteRangeInputStream.java      |   79 +
 .../hdfs/web/TestFSMainOperationsWebHdfs.java   |    4 +-
 .../org/apache/hadoop/hdfs/web/TestWebHDFS.java |    4 +-
 .../hadoop/hdfs/web/TestWebHDFSOAuth2.java      |  216 ++
 .../web/TestWebHdfsWithMultipleNameNodes.java   |    3 +-
 .../hdfs/web/oauth2/TestAccessTokenTimer.java   |   63 +
 ...ClientCredentialTimeBasedTokenRefresher.java |  138 +
 ...TestRefreshTokenTimeBasedTokenRefresher.java |  138 +
 .../hadoop/tools/TestHdfsConfigFields.java      |    6 +-
 .../org/apache/hadoop/tools/TestJMXGet.java     |    3 +
 .../apache/hadoop/tracing/TestTraceAdmin.java   |   17 +-
 .../org/apache/hadoop/tracing/TestTracing.java  |   86 +-
 .../TestTracingShortCircuitLocalRead.java       |   18 +-
 .../src/test/resources/hadoop-252-dfs-dir.tgz   |  Bin 0 -> 14112 bytes
 .../test/resources/hadoop-metrics2.properties   |   85 +
 .../src/test/resources/log4j.properties         |   13 +
 .../src/test/resources/testDeleteConf.xml       |   83 +
 .../src/test/resources/testHDFSConf.xml         |  198 +-
 hadoop-mapreduce-project/CHANGES.txt            |  125 +-
 hadoop-mapreduce-project/bin/mapred             |    8 +
 .../v2/app/job/impl/TaskAttemptImpl.java        |   94 +-
 .../v2/app/rm/RMContainerAllocator.java         |   12 +-
 .../v2/app/rm/RMContainerRequestor.java         |    2 +-
 .../apache/hadoop/mapreduce/v2/app/MRApp.java   |   11 +-
 .../v2/app/job/impl/TestTaskAttempt.java        |  162 +
 .../v2/app/launcher/TestContainerLauncher.java  |   11 +
 .../app/launcher/TestContainerLauncherImpl.java |    9 +
 .../app/local/TestLocalContainerAllocator.java  |    6 +-
 .../v2/app/rm/TestRMContainerAllocator.java     |  126 +-
 .../apache/hadoop/mapred/LocalJobRunner.java    |   27 +
 .../java/org/apache/hadoop/mapred/Master.java   |   27 +-
 .../java/org/apache/hadoop/mapred/TaskLog.java  |    4 +-
 .../org/apache/hadoop/mapreduce/Cluster.java    |    2 +-
 .../lib/input/UncompressedSplitLineReader.java  |   31 +-
 .../lib/output/FileOutputCommitter.java         |   52 +-
 .../hadoop/mapred/TestLineRecordReader.java     |  138 +
 .../org/apache/hadoop/mapred/TestMaster.java    |   13 +
 .../lib/input/TestLineRecordReader.java         |  161 +
 .../org/apache/hadoop/mapred/YARNRunner.java    |    4 +
 .../org/apache/hadoop/cli/CLITestCmdMR.java     |    3 +-
 .../org/apache/hadoop/fs/TestFileSystem.java    |   14 +-
 .../java/org/apache/hadoop/hdfs/NNBench.java    |   14 +-
 .../hadoop/mapred/TestLocalJobSubmission.java   |   25 +
 .../apache/hadoop/mapred/TestYARNRunner.java    |   10 +-
 .../mapreduce/security/TestMRCredentials.java   |    4 +-
 .../apache/hadoop/mapred/ShuffleHandler.java    |  177 +-
 .../hadoop/mapred/TestShuffleHandler.java       |  129 +
 hadoop-project/pom.xml                          |   17 +-
 hadoop-project/src/site/site.xml                |    1 +
 .../dev-support/findbugs-exclude.xml            |   32 +
 hadoop-tools/hadoop-archive-logs/pom.xml        |  189 ++
 .../apache/hadoop/tools/HadoopArchiveLogs.java  |  552 +++
 .../hadoop/tools/HadoopArchiveLogsRunner.java   |  180 +
 .../hadoop/tools/TestHadoopArchiveLogs.java     |  350 ++
 .../tools/TestHadoopArchiveLogsRunner.java      |  143 +
 .../org/apache/hadoop/fs/s3a/Constants.java     |    4 +-
 .../org/apache/hadoop/fs/s3a/S3AFileSystem.java |    3 +
 .../src/site/markdown/tools/hadoop-aws/index.md |    4 +-
 .../hadoop/fs/azure/NativeAzureFileSystem.java  |    3 -
 .../fs/azure/NativeAzureFileSystemBaseTest.java |    1 -
 .../tools/mapred/UniformSizeInputFormat.java    |    3 +-
 .../hadoop/tools/util/ProducerConsumer.java     |   19 +-
 .../apache/hadoop/tools/util/WorkReport.java    |    2 +-
 .../apache/hadoop/tools/util/WorkRequest.java   |    2 +-
 .../src/site/markdown/DistCp.md.vm              |    5 +-
 .../hadoop/mapred/gridmix/SerialJobFactory.java |    2 +-
 .../hadoop/yarn/sls/RumenToSLSConverter.java    |    2 +-
 .../hadoop/yarn/sls/nodemanager/NodeInfo.java   |   14 +
 .../yarn/sls/scheduler/RMNodeWrapper.java       |   13 +
 .../sls/scheduler/ResourceSchedulerWrapper.java |   21 +-
 .../sls/scheduler/SLSCapacityScheduler.java     |   19 +-
 .../org/apache/hadoop/streaming/UtilTest.java   |    5 -
 hadoop-tools/hadoop-tools-dist/pom.xml          |    5 +
 hadoop-tools/pom.xml                            |    1 +
 hadoop-yarn-project/CHANGES.txt                 |  603 ++--
 .../yarn/api/ContainerManagementProtocol.java   |   30 +-
 .../api/protocolrecords/AllocateRequest.java    |   57 +-
 .../api/protocolrecords/AllocateResponse.java   |   42 +-
 .../IncreaseContainersResourceRequest.java      |   75 +
 .../IncreaseContainersResourceResponse.java     |   93 +
 .../MoveApplicationAcrossQueuesResponse.java    |    5 +-
 .../yarn/api/records/ApplicationReport.java     |   31 +-
 .../records/ContainerResourceChangeRequest.java |  117 +
 .../api/records/ContainerResourceDecrease.java  |   78 -
 .../api/records/ContainerResourceIncrease.java  |   84 -
 .../ContainerResourceIncreaseRequest.java       |   80 -
 .../yarn/api/records/ContainerStatus.java       |   13 +
 .../hadoop/yarn/api/records/NodeLabel.java      |   16 +
 .../hadoop/yarn/api/records/ResourceOption.java |    3 +
 .../hadoop/yarn/conf/YarnConfiguration.java     |   37 +-
 .../hadoop/yarn/server/api/ContainerType.java   |    1 -
 .../ResourceManagerAdministrationProtocol.java  |   24 +-
 .../RefreshClusterMaxPriorityRequest.java       |   35 +
 .../RefreshClusterMaxPriorityResponse.java      |   36 +
 .../RefreshNodesResourcesRequest.java           |   39 +
 .../RefreshNodesResourcesResponse.java          |   39 +
 .../proto/containermanagement_protocol.proto    |    1 +
 ...esourcemanager_administration_protocol.proto |    4 +-
 ..._server_resourcemanager_service_protos.proto |   11 +
 .../src/main/proto/yarn_protos.proto            |   16 +-
 .../src/main/proto/yarn_service_protos.proto    |   16 +-
 .../yarn/conf/TestYarnConfigurationFields.java  |    2 +
 .../hadoop-yarn/hadoop-yarn-client/pom.xml      |   12 +
 .../yarn/client/api/impl/AMRMClientImpl.java    |    2 +-
 .../impl/ContainerManagementProtocolProxy.java  |   14 +-
 .../yarn/client/api/impl/YarnClientImpl.java    |    7 +-
 .../hadoop/yarn/client/cli/ApplicationCLI.java  |   10 +-
 .../apache/hadoop/yarn/client/cli/LogsCLI.java  |  104 +-
 .../apache/hadoop/yarn/client/cli/QueueCLI.java |   11 +-
 .../hadoop/yarn/client/cli/RMAdminCLI.java      |   76 +-
 .../hadoop/yarn/client/TestRMFailover.java      |   27 +
 .../yarn/client/TestResourceTrackerOnHA.java    |    2 +-
 .../api/impl/TestAMRMClientOnRMRestart.java     |    8 +-
 .../hadoop/yarn/client/cli/TestLogsCLI.java     |   53 +-
 .../hadoop/yarn/client/cli/TestRMAdminCLI.java  |   40 +-
 .../hadoop/yarn/client/cli/TestYarnCLI.java     |    8 +-
 .../application_1440536969523_0001.har/_SUCCESS |    0
 .../application_1440536969523_0001.har/_index   |    3 +
 .../_masterindex                                |    2 +
 .../application_1440536969523_0001.har/part-0   |  Bin 0 -> 795 bytes
 .../hadoop-yarn/hadoop-yarn-common/pom.xml      |    4 +
 ...ContainerManagementProtocolPBClientImpl.java |   20 +
 ...ontainerManagementProtocolPBServiceImpl.java |   22 +
 .../impl/pb/AllocateRequestPBImpl.java          |  119 +-
 .../impl/pb/AllocateResponsePBImpl.java         |  175 +-
 ...IncreaseContainersResourceRequestPBImpl.java |  170 +
 ...ncreaseContainersResourceResponsePBImpl.java |  241 ++
 .../impl/pb/ApplicationReportPBImpl.java        |   38 +
 .../ContainerResourceChangeRequestPBImpl.java   |  141 +
 .../pb/ContainerResourceDecreasePBImpl.java     |  136 -
 .../pb/ContainerResourceIncreasePBImpl.java     |  171 -
 .../ContainerResourceIncreaseRequestPBImpl.java |  141 -
 .../records/impl/pb/ContainerStatusPBImpl.java  |   31 +-
 .../org/apache/hadoop/yarn/client/RMProxy.java  |    3 +-
 .../apache/hadoop/yarn/client/ServerProxy.java  |    3 +-
 .../yarn/logaggregation/LogCLIHelpers.java      |   16 +-
 .../nodelabels/CommonNodeLabelsManager.java     |    2 +-
 .../yarn/security/ContainerTokenSelector.java   |    2 +-
 .../hadoop/yarn/security/NMTokenSelector.java   |    2 +-
 ...nagerAdministrationProtocolPBClientImpl.java |   39 +
 ...agerAdministrationProtocolPBServiceImpl.java |   45 +
 .../RefreshClusterMaxPriorityRequestPBImpl.java |   74 +
 ...RefreshClusterMaxPriorityResponsePBImpl.java |   73 +
 .../pb/RefreshNodesResourcesRequestPBImpl.java  |   72 +
 .../pb/RefreshNodesResourcesResponsePBImpl.java |   72 +
 .../resource/DefaultResourceCalculator.java     |    5 +
 .../resource/DominantResourceCalculator.java    |    6 +
 .../yarn/util/resource/ResourceCalculator.java  |    5 +
 .../hadoop/yarn/util/resource/Resources.java    |    5 +
 .../hadoop/yarn/webapp/YarnWebParams.java       |    1 +
 .../yarn/webapp/log/AggregatedLogsBlock.java    |    7 +
 .../src/main/resources/yarn-default.xml         |   63 +-
 .../hadoop/yarn/TestContainerLaunchRPC.java     |    8 +
 .../yarn/TestContainerResourceIncreaseRPC.java  |  162 +
 .../java/org/apache/hadoop/yarn/TestRPC.java    |    8 +
 .../hadoop/yarn/api/TestAllocateRequest.java    |   73 -
 .../hadoop/yarn/api/TestAllocateResponse.java   |  114 -
 .../hadoop/yarn/api/TestApplicatonReport.java   |    2 +-
 .../yarn/api/TestContainerResourceDecrease.java |   66 -
 .../yarn/api/TestContainerResourceIncrease.java |   74 -
 .../TestContainerResourceIncreaseRequest.java   |   68 -
 .../hadoop/yarn/api/TestPBImplRecords.java      |   70 +-
 .../hadoop/yarn/event/TestAsyncDispatcher.java  |    2 +
 .../logaggregation/TestAggregatedLogsBlock.java |   63 +-
 .../util/resource/TestResourceCalculator.java   |   30 +-
 .../hadoop/yarn/webapp/JerseyTestBase.java      |   14 +-
 .../application_1440536969523_0001.har/_SUCCESS |    0
 .../application_1440536969523_0001.har/_index   |    3 +
 .../_masterindex                                |    2 +
 .../application_1440536969523_0001.har/part-0   |  Bin 0 -> 795 bytes
 .../hadoop-yarn/hadoop-yarn-registry/pom.xml    |    6 +-
 ...pplicationHistoryManagerOnTimelineStore.java |   41 +-
 .../ApplicationHistoryServer.java               |   13 +-
 ...pplicationHistoryManagerOnTimelineStore.java |   43 +-
 .../TestApplicationHistoryServer.java           |    4 +-
 .../protocolrecords/NodeHeartbeatResponse.java  |    5 +
 .../impl/pb/NodeHeartbeatResponsePBImpl.java    |   77 +-
 .../yarn/server/api/records/NodeStatus.java     |   17 +-
 .../api/records/impl/pb/NodeStatusPBImpl.java   |   83 +-
 .../metrics/ApplicationMetricsConstants.java    |    9 +
 .../hadoop/yarn/server/utils/BuilderUtils.java  |    4 +-
 .../server/utils/YarnServerSecurityUtils.java   |  142 +
 .../hadoop/yarn/server/webapp/AppBlock.java     |    6 +
 .../hadoop/yarn/server/webapp/WebPageUtils.java |    3 +-
 .../hadoop/yarn/server/webapp/WebServices.java  |    9 +
 .../hadoop/yarn/server/webapp/dao/AppInfo.java  |   12 +
 .../main/proto/yarn_server_common_protos.proto  |    3 +-
 .../yarn_server_common_service_protos.proto     |    1 +
 .../hadoop/yarn/TestYarnServerApiClasses.java   |   39 +-
 .../CMgrDecreaseContainersResourceEvent.java    |   37 +
 .../nodemanager/ContainerManagerEventType.java  |    1 +
 .../hadoop/yarn/server/nodemanager/Context.java |    3 +
 .../nodemanager/LinuxContainerExecutor.java     |    2 +-
 .../nodemanager/LocalDirsHandlerService.java    |   33 +-
 .../yarn/server/nodemanager/NodeManager.java    |   12 +-
 .../nodemanager/NodeStatusUpdaterImpl.java      |   84 +-
 .../amrmproxy/AMRMProxyApplicationContext.java  |   70 +
 .../AMRMProxyApplicationContextImpl.java        |  132 +
 .../nodemanager/amrmproxy/AMRMProxyService.java |  592 ++++
 .../amrmproxy/AMRMProxyTokenSecretManager.java  |  265 ++
 .../amrmproxy/AbstractRequestInterceptor.java   |  102 +
 .../amrmproxy/DefaultRequestInterceptor.java    |  138 +
 .../amrmproxy/RequestInterceptor.java           |   71 +
 .../containermanager/ContainerManagerImpl.java  |  351 +-
 .../containermanager/container/Container.java   |    2 +
 .../container/ContainerImpl.java                |   24 +-
 .../localizer/LocalResourcesTrackerImpl.java    |   64 +-
 .../localizer/ResourceLocalizationService.java  |    2 +-
 .../logaggregation/AppLogAggregator.java        |    2 +
 .../logaggregation/AppLogAggregatorImpl.java    |    6 +
 .../logaggregation/LogAggregationService.java   |   25 +-
 .../ChangeMonitoringContainerResourceEvent.java |   37 +
 .../monitor/ContainersMonitorEventType.java     |    3 +-
 .../monitor/ContainersMonitorImpl.java          |  207 +-
 .../nodemanager/metrics/NodeManagerMetrics.java |   11 +
 .../nodelabels/AbstractNodeLabelsProvider.java  |    7 +-
 .../ConfigurationNodeLabelsProvider.java        |   11 -
 .../recovery/NMLeveldbStateStoreService.java    |   22 +
 .../recovery/NMNullStateStoreService.java       |    6 +
 .../recovery/NMStateStoreService.java           |   15 +
 .../nodemanager/webapp/NMWebServices.java       |   12 +-
 .../nodemanager/webapp/dao/ContainerInfo.java   |   46 +-
 .../nodemanager/DummyContainerManager.java      |   13 +-
 .../TestContainerManagerWithLCE.java            |   33 +
 .../yarn/server/nodemanager/TestEventFlow.java  |    3 +-
 .../TestLocalDirsHandlerService.java            |   18 +
 .../nodemanager/TestNodeManagerResync.java      |  260 +-
 .../nodemanager/TestNodeStatusUpdater.java      |    8 +-
 .../amrmproxy/BaseAMRMProxyTest.java            |  682 ++++
 .../amrmproxy/MockRequestInterceptor.java       |   65 +
 .../amrmproxy/MockResourceManagerFacade.java    |  467 +++
 .../PassThroughRequestInterceptor.java          |   58 +
 .../amrmproxy/TestAMRMProxyService.java         |  484 +++
 .../BaseContainerManagerTest.java               |   46 +-
 .../containermanager/TestContainerManager.java  |  293 +-
 .../TestContainerManagerRecovery.java           |  236 +-
 .../containermanager/TestNMProxy.java           |    3 +-
 .../TestLocalResourcesTrackerImpl.java          |   86 +-
 .../localizer/TestResourceRetention.java        |    2 +-
 .../TestLogAggregationService.java              |   36 +-
 .../monitor/MockResourceCalculatorPlugin.java   |   69 +
 .../MockResourceCalculatorProcessTree.java      |   57 +
 .../TestContainersMonitorResourceChange.java    |  248 ++
 .../metrics/TestNodeManagerMetrics.java         |   18 +-
 .../TestConfigurationNodeLabelsProvider.java    |   69 +-
 .../recovery/NMMemoryStateStoreService.java     |   11 +-
 .../TestNMLeveldbStateStoreService.java         |   11 +
 .../nodemanager/webapp/MockContainer.java       |    4 +
 .../webapp/TestNMWebServicesContainers.java     |   13 +-
 .../server/resourcemanager/AdminService.java    |  109 +-
 .../ApplicationMasterService.java               |   91 +-
 .../server/resourcemanager/ClientRMService.java |   35 +-
 .../resourcemanager/EmbeddedElectorService.java |    4 +
 .../resourcemanager/NodesListManager.java       |  144 +-
 .../resourcemanager/RMActiveServiceContext.java |   16 +-
 .../server/resourcemanager/RMAppManager.java    |    9 +
 .../server/resourcemanager/RMAuditLogger.java   |    2 +
 .../yarn/server/resourcemanager/RMContext.java  |    5 +
 .../server/resourcemanager/RMContextImpl.java   |   12 +-
 .../resourcemanager/RMFatalEventType.java       |    5 +-
 .../server/resourcemanager/RMServerUtils.java   |  164 +
 .../server/resourcemanager/ResourceManager.java |    4 +-
 .../resourcemanager/ResourceTrackerService.java |   27 +-
 .../resourcemanager/amlauncher/AMLauncher.java  |   27 +-
 .../blacklist/BlacklistManager.java             |   47 +
 .../blacklist/BlacklistUpdates.java             |   47 +
 .../blacklist/DisabledBlacklistManager.java     |   45 +
 .../blacklist/SimpleBlacklistManager.java       |   84 +
 .../metrics/ApplicationCreatedEvent.java        |   16 +-
 .../metrics/ApplicationUpdatedEvent.java        |   54 +
 .../metrics/SystemMetricsEventType.java         |    1 +
 .../metrics/SystemMetricsPublisher.java         |   43 +-
 .../placement/PlacementManager.java             |   95 +
 .../placement/PlacementRule.java                |   55 +
 .../UserGroupMappingPlacementRule.java          |  164 +
 .../resourcemanager/recovery/RMStateStore.java  |   15 +-
 .../resource/DynamicResourceConfiguration.java  |  149 +
 .../server/resourcemanager/rmapp/RMApp.java     |    6 +
 .../server/resourcemanager/rmapp/RMAppImpl.java |   64 +-
 .../rmapp/attempt/RMAppAttempt.java             |    7 +
 .../rmapp/attempt/RMAppAttemptImpl.java         |   60 +-
 .../rmcontainer/RMContainer.java                |    4 +
 .../RMContainerChangeResourceEvent.java         |   44 +
 .../rmcontainer/RMContainerEventType.java       |   13 +-
 .../rmcontainer/RMContainerImpl.java            |  121 +-
 .../RMContainerUpdatesAcquiredEvent.java        |   35 +
 .../server/resourcemanager/rmnode/RMNode.java   |   12 +-
 .../rmnode/RMNodeDecreaseContainerEvent.java    |   39 +
 .../resourcemanager/rmnode/RMNodeEventType.java |    3 +-
 .../resourcemanager/rmnode/RMNodeImpl.java      |  549 ++-
 .../rmnode/RMNodeStatusEvent.java               |   33 +-
 .../scheduler/AbstractYarnScheduler.java        |  177 +-
 .../resourcemanager/scheduler/Allocation.java   |   22 +-
 .../scheduler/AppSchedulingInfo.java            |  327 +-
 .../resourcemanager/scheduler/QueueMetrics.java |   16 +-
 .../scheduler/SchedContainerChangeRequest.java  |  118 +
 .../scheduler/SchedulerApplication.java         |    2 +-
 .../scheduler/SchedulerApplicationAttempt.java  |  281 +-
 .../scheduler/SchedulerNode.java                |   31 +
 .../scheduler/SchedulerUtils.java               |   11 +-
 .../scheduler/YarnScheduler.java                |   36 +-
 .../scheduler/capacity/AbstractCSQueue.java     |   50 +-
 .../scheduler/capacity/CSAssignment.java        |    9 +
 .../scheduler/capacity/CSQueue.java             |   42 +
 .../scheduler/capacity/CapacityScheduler.java   |  289 +-
 .../CapacitySchedulerConfiguration.java         |   32 +-
 .../scheduler/capacity/LeafQueue.java           |  149 +-
 .../scheduler/capacity/ParentQueue.java         |  115 +-
 .../allocator/AbstractContainerAllocator.java   |  131 +
 .../capacity/allocator/ContainerAllocator.java  |  149 +-
 .../allocator/IncreaseContainerAllocator.java   |  365 ++
 .../allocator/RegularContainerAllocator.java    |   30 +-
 .../scheduler/common/fica/FiCaSchedulerApp.java |   77 +-
 .../common/fica/FiCaSchedulerUtils.java         |   48 -
 .../scheduler/fair/FSAppAttempt.java            |   19 +-
 .../scheduler/fair/FSLeafQueue.java             |    5 +-
 .../scheduler/fair/FSParentQueue.java           |    3 +-
 .../scheduler/fair/FairScheduler.java           |   70 +-
 .../fair/FairSchedulerConfiguration.java        |   22 +-
 .../scheduler/fair/QueueManager.java            |  104 +-
 .../scheduler/fifo/FifoScheduler.java           |   36 +-
 .../scheduler/policy/OrderingPolicy.java        |    2 +-
 .../resourcemanager/webapp/AboutBlock.java      |    2 +
 .../webapp/CapacitySchedulerPage.java           |   17 +-
 .../webapp/JAXBContextResolver.java             |    2 +-
 .../webapp/MetricsOverviewTable.java            |    3 +
 .../resourcemanager/webapp/NodeLabelsPage.java  |    6 +-
 .../resourcemanager/webapp/RMAppBlock.java      |    3 +-
 .../server/resourcemanager/webapp/RMWebApp.java |    5 +
 .../resourcemanager/webapp/RMWebAppFilter.java  |   93 +-
 .../resourcemanager/webapp/RMWebServices.java   |  123 +-
 .../webapp/dao/AppAttemptInfo.java              |   10 +-
 .../resourcemanager/webapp/dao/AppInfo.java     |   29 +-
 .../resourcemanager/webapp/dao/AppPriority.java |   44 +
 .../dao/CapacitySchedulerLeafQueueInfo.java     |   14 +-
 .../resourcemanager/webapp/dao/ClusterInfo.java |    6 +
 .../webapp/dao/SchedulerInfo.java               |    6 +
 .../server/resourcemanager/Application.java     |    2 +-
 .../yarn/server/resourcemanager/MockAM.java     |    9 +
 .../yarn/server/resourcemanager/MockNM.java     |    2 +-
 .../yarn/server/resourcemanager/MockNodes.java  |   13 +
 .../yarn/server/resourcemanager/MockRM.java     |   45 +-
 .../server/resourcemanager/NodeManager.java     |   13 +-
 .../server/resourcemanager/RMHATestBase.java    |    2 +-
 .../resourcemanager/TestAMAuthorization.java    |    8 +
 .../server/resourcemanager/TestAppManager.java  |   54 +-
 .../resourcemanager/TestApplicationCleanup.java |    6 +-
 .../TestApplicationMasterLauncher.java          |   75 +
 .../TestApplicationMasterService.java           |  144 +-
 .../resourcemanager/TestClientRMService.java    |  343 +-
 .../resourcemanager/TestRMAdminService.java     |   80 +
 .../yarn/server/resourcemanager/TestRMHA.java   |   71 +
 .../resourcemanager/TestRMNodeTransitions.java  |  202 +-
 .../TestTokenClientRMService.java               |  300 ++
 .../TestWorkPreservingRMRestart.java            |   21 +-
 .../applicationsmanager/MockAsm.java            |   10 +
 .../applicationsmanager/TestAMRestart.java      |  162 +-
 .../blacklist/TestBlacklistManager.java         |  118 +
 .../TestRMAppLogAggregationStatus.java          |   12 +-
 .../metrics/TestSystemMetricsPublisher.java     |   68 +-
 .../TestUserGroupMappingPlacementRule.java      |   89 +
 .../server/resourcemanager/rmapp/MockRMApp.java |   13 +
 .../rmapp/TestNodesListManager.java             |  102 +
 .../rmapp/TestRMAppTransitions.java             |    9 +-
 .../attempt/TestRMAppAttemptTransitions.java    |   53 +-
 .../rmcontainer/TestRMContainerImpl.java        |  117 +-
 .../scheduler/TestAbstractYarnScheduler.java    |   14 +-
 .../capacity/TestCapacityScheduler.java         |  277 +-
 .../TestCapacitySchedulerNodeLabelUpdate.java   |  249 +-
 .../scheduler/capacity/TestChildQueueOrder.java |    4 +-
 .../capacity/TestContainerAllocation.java       |   50 +-
 .../capacity/TestContainerResizing.java         |  963 ++++++
 .../scheduler/capacity/TestLeafQueue.java       |    4 +-
 .../scheduler/capacity/TestParentQueue.java     |    4 +-
 .../scheduler/capacity/TestQueueMappings.java   |  203 +-
 .../scheduler/capacity/TestReservations.java    |    9 +-
 .../scheduler/fair/FairSchedulerTestBase.java   |   14 +-
 .../fair/TestContinuousScheduling.java          |    2 +-
 .../scheduler/fair/TestFSParentQueue.java       |   79 +
 .../scheduler/fair/TestFairScheduler.java       |  150 +-
 .../scheduler/fifo/TestFifoScheduler.java       |   34 +-
 .../security/TestAMRMTokens.java                |    3 +-
 .../security/TestRMDelegationTokens.java        |    3 +
 .../resourcemanager/webapp/TestNodesPage.java   |    5 +-
 .../webapp/TestRMWebServices.java               |    8 +-
 .../webapp/TestRMWebServicesApps.java           |   34 +-
 .../TestRMWebServicesAppsModification.java      |  120 +
 .../webapp/TestRMWebServicesCapacitySched.java  |    2 +-
 .../TestRMWebServicesDelegationTokens.java      |    6 +-
 .../hadoop/yarn/server/MiniYARNCluster.java     |   42 +-
 .../yarn/server/webproxy/AppReportFetcher.java  |   49 +-
 .../server/webproxy/WebAppProxyServlet.java     |   46 +-
 .../server/webproxy/TestWebAppProxyServlet.java |  113 +-
 .../src/site/markdown/CapacityScheduler.md      |    6 +-
 .../src/site/markdown/NodeLabel.md              |  140 +
 .../src/site/markdown/ResourceManagerRest.md    |  152 +-
 .../src/site/markdown/TimelineServer.md         |   38 +-
 989 files changed, 60801 insertions(+), 36348 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
----------------------------------------------------------------------
diff --cc hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
index 2df5955,0e2d541..88b4594
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
@@@ -41,7 -41,7 +41,7 @@@ message ExtendedBlockProto 
    required uint64 blockId = 2;  // the local id within a pool
    required uint64 generationStamp = 3;
    optional uint64 numBytes = 4 [default = 0];  // len does not belong in ebid 
--                                               // here for historical reasons
++  // here for historical reasons
  }
  
  /**
@@@ -51,9 -51,9 +51,9 @@@ message DatanodeIDProto 
    required string ipAddr = 1;    // IP address
    required string hostName = 2;  // hostname
    required string datanodeUuid = 3;     // UUID assigned to the Datanode. For
--                                        // upgraded clusters this is the same
--                                        // as the original StorageID of the
--                                        // Datanode.
++  // upgraded clusters this is the same
++  // as the original StorageID of the
++  // Datanode.
    required uint32 xferPort = 4;  // data streaming port
    required uint32 infoPort = 5;  // datanode http port
    required uint32 ipcPort = 6;   // ipc server port
@@@ -156,8 -157,8 +157,8 @@@ message StorageTypeQuotaInfoProto 
   *
   */
  message CorruptFileBlocksProto {
-- repeated string files = 1;
-- required string   cookie = 2;
++  repeated string files = 1;
++  required string   cookie = 2;
  }
  
  /**
@@@ -201,20 -202,14 +202,14 @@@ message BlockStoragePolicyProto 
  
  /**
   * A LocatedBlock gives information about a block and its location.
-- */ 
++ */
  message LocatedBlockProto {
    required ExtendedBlockProto b  = 1;
    required uint64 offset = 2;           // offset of first byte of block in 
the file
    repeated DatanodeInfoProto locs = 3;  // Locations ordered by proximity to 
client ip
    required bool corrupt = 4;            // true if all replicas of a block 
are corrupt, else false
--                                        // If block has few corrupt replicas, 
they are filtered and 
--                                        // their locations are not part of 
this object
++  // If block has few corrupt replicas, they are filtered and
++  // their locations are not part of this object
  
    required hadoop.common.TokenProto blockToken = 5;
    repeated bool isCached = 6 [packed=true]; // if a location in locs is cached
@@@ -235,16 -230,16 +230,16 @@@ message DataEncryptionKeyProto 
   * Cipher suite.
   */
  enum CipherSuiteProto {
--    UNKNOWN = 1;
--    AES_CTR_NOPADDING = 2;
++  UNKNOWN = 1;
++  AES_CTR_NOPADDING = 2;
  }
  
  /**
   * Crypto protocol version used to access encrypted files.
   */
  enum CryptoProtocolVersionProto {
--    UNKNOWN_PROTOCOL_VERSION = 1;
--    ENCRYPTION_ZONES = 2;
++  UNKNOWN_PROTOCOL_VERSION = 1;
++  ENCRYPTION_ZONES = 2;
  }
  
  /**
@@@ -336,7 -331,7 +331,7 @@@ message HdfsFileStatusProto 
    optional FileEncryptionInfoProto fileEncryptionInfo = 15;
  
    optional uint32 storagePolicy = 16 [default = 0]; // block storage policy id
--} 
++}
  
  /**
   * Checksum algorithms/types used in HDFS

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

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguous.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlocksMap.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlocksMap.java
index 230786c,9189c32..ad1aa3b
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlocksMap.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlocksMap.java
@@@ -17,10 -17,10 +17,11 @@@
   */
  package org.apache.hadoop.hdfs.server.blockmanagement;
  
 -import java.util.Iterator;
 -
 +import com.google.common.base.Preconditions;
 +import com.google.common.base.Predicate;
 +import com.google.common.collect.Iterables;
  import org.apache.hadoop.hdfs.protocol.Block;
+ import org.apache.hadoop.hdfs.server.namenode.INodeId;
  import org.apache.hadoop.hdfs.server.protocol.DatanodeStorage;
  import org.apache.hadoop.util.GSet;
  import org.apache.hadoop.util.LightWeightGSet;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java
index fd1c0f0,0b398c5..0b143f3
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java
@@@ -17,8 -17,22 +17,9 @@@
   */
  package org.apache.hadoop.hdfs.server.blockmanagement;
  
 -import java.util.ArrayList;
 -import java.util.BitSet;
 -import java.util.Collection;
 -import java.util.Collections;
 -import java.util.HashMap;
 -import java.util.HashSet;
 -import java.util.Iterator;
 -import java.util.LinkedList;
 -import java.util.List;
 -import java.util.Map;
 -import java.util.Queue;
 -import java.util.Set;
 -
  import com.google.common.annotations.VisibleForTesting;
  import com.google.common.collect.ImmutableList;
+ 
  import org.apache.hadoop.classification.InterfaceAudience;
  import org.apache.hadoop.classification.InterfaceStability;
  import org.apache.hadoop.fs.StorageType;

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
----------------------------------------------------------------------

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
index 8946256,2fe67fd..6bd556f
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
@@@ -148,15 -152,12 +154,16 @@@ import org.apache.hadoop.hdfs.security.
  import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
  import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.ReplicaState;
  import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
+ import org.apache.hadoop.hdfs.server.common.MetricsLoggerTask;
  import org.apache.hadoop.hdfs.server.common.Storage;
 +import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
  import org.apache.hadoop.hdfs.server.common.StorageInfo;
 +import org.apache.hadoop.hdfs.server.datanode.DataStorage.VolumeBuilder;
  import 
org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter.SecureResources;
 +import org.apache.hadoop.hdfs.server.datanode.dataset.DatasetSpi;
  import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsDatasetSpi;
  import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsVolumeSpi;
 +import org.apache.hadoop.hdfs.server.datanode.dataset.VolumeSpi;
  import org.apache.hadoop.hdfs.server.datanode.metrics.DataNodeMetrics;
  import org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer;
  import 
org.apache.hadoop.hdfs.server.protocol.BlockRecoveryCommand.RecoveringBlock;
@@@ -630,7 -602,7 +668,6 @@@ public class DataNode extends Reconfigu
    private synchronized void refreshVolumes(String newVolumes) throws 
IOException {
      Configuration conf = getConf();
      conf.set(DFS_DATANODE_DATA_DIR_KEY, newVolumes);
- 
 -    ExecutorService service = null;
      int numOldDataDirs = dataDirs.size();
      ChangedVolumes changedVolumes = parseChangedVolumes(newVolumes);
      StringBuilder errorMessageBuilder = new StringBuilder();
@@@ -2233,11 -2176,10 +2284,11 @@@
          unbufIn = saslStreams.in;
          
          out = new DataOutputStream(new BufferedOutputStream(unbufOut,
-             DFSUtil.getSmallBufferSize(conf)));
+             DFSUtilClient.getSmallBufferSize(conf)));
          in = new DataInputStream(unbufIn);
          blockSender = new BlockSender(b, 0, b.getNumBytes(), 
 -            false, false, true, DataNode.this, null, cachingStrategy);
 +            false, false, true, DataNode.this, data,
 +            null, cachingStrategy);
          DatanodeInfo srcNode = new DatanodeInfo(bpReg);
  
          new Sender(out).writeBlock(b, targetStorageTypes[0], accessToken,

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

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java
index ff537b8,b8ea5bf..1663116
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java
@@@ -310,17 -401,44 +402,50 @@@ public class DirectoryScanner implement
      }
    }
  
+   /**
+    * Create a new directory scanner, but don't cycle it running yet.
+    *
+    * @param datanode the parent datanode
+    * @param dataset the dataset to scan
+    * @param conf the Configuration object
+    */
 -  DirectoryScanner(DataNode datanode, FsDatasetSpi<?> dataset, Configuration 
conf) {
 +  DirectoryScanner(DataNode datanode, DatasetSpi<?> dataset,
 +                   Configuration conf) {
 +    if (!(dataset instanceof FsDatasetSpi)) {
 +      throw new IllegalArgumentException(
 +          "DirectoryScanner not implemented for " + dataset.getClass());
 +    }
      this.datanode = datanode;
 -    this.dataset = dataset;
 +    this.dataset = (FsDatasetSpi<?>) dataset;
      int interval = 
conf.getInt(DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_INTERVAL_KEY,
          DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_INTERVAL_DEFAULT);
-     scanPeriodMsecs = interval * 1000L; //msec
+     scanPeriodMsecs = interval * MILLIS_PER_SECOND; //msec
+ 
+     int throttle =
+         conf.getInt(
+           
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_KEY,
+           
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_DEFAULT);
+ 
+     if ((throttle > MILLIS_PER_SECOND) || (throttle <= 0)) {
+       if (throttle > MILLIS_PER_SECOND) {
++
+         LOG.error(
+             
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_KEY
+             + " set to value above 1000 ms/sec. Assuming default value of " +
+             
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_DEFAULT);
+       } else {
+         LOG.error(
+             
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_KEY
+             + " set to value below 1 ms/sec. Assuming default value of " +
+             
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_DEFAULT);
+       }
+ 
+       throttleLimitMsPerSec =
+           
DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THROTTLE_LIMIT_MS_PER_SEC_DEFAULT;
+     } else {
+       throttleLimitMsPerSec = throttle;
+     }
+ 
      int threads = 
          conf.getInt(DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THREADS_KEY,
                      DFSConfigKeys.DFS_DATANODE_DIRECTORYSCAN_THREADS_DEFAULT);

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/FsVolumeSpi.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/FsVolumeSpi.java
index d58ce79,9e16121..b2ef246
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/FsVolumeSpi.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/FsVolumeSpi.java
@@@ -45,14 -41,34 +45,14 @@@ public interface FsVolumeSpi extends Vo
    /** @return the directory for the finalized blocks in the block pool. */
    File getFinalizedDir(String bpid) throws IOException;
    
 -  StorageType getStorageType();
 -
 -  /** Returns true if the volume is NOT backed by persistent storage. */
 -  boolean isTransientStorage();
 -
    /**
-    * Reserve disk space for an RBW block so a writer does not run out of
-    * space before the block is full.
+    * Reserve disk space for a block (RBW or Re-replicating)
+    * so a writer does not run out of space before the block is full.
     */
-   void reserveSpaceForRbw(long bytesToReserve);
+   void reserveSpaceForReplica(long bytesToReserve);
  
    /**
-    * Release disk space previously reserved for RBW block.
+    * Release disk space previously reserved for block opened for write.
     */
    void releaseReservedSpace(long bytesToRelease);
  

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hadoop/blob/28d313d1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
----------------------------------------------------------------------
diff --cc 
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
index bbbf5f5,0000000..3147767
mode 100644,000000..100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerManager.java
@@@ -1,322 -1,0 +1,323 @@@
 +/**
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + *     http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +
 +package org.apache.hadoop.storagecontainer;
 +
 +import com.google.protobuf.BlockingService;
 +import org.apache.hadoop.ha.HAServiceProtocol;
 +import org.apache.hadoop.hdfs.DFSUtil;
++import org.apache.hadoop.hdfs.DFSUtilClient;
 +import org.apache.hadoop.hdfs.protocol.*;
 +import org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos;
 +import org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolPB;
 +import 
org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolServerSideTranslatorPB;
 +import org.apache.hadoop.hdfs.server.blockmanagement.BlockManager;
 +import org.apache.hadoop.hdfs.server.blockmanagement.BlocksMap;
 +import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
 +import org.apache.hadoop.hdfs.server.namenode.NameNode;
 +import org.apache.hadoop.hdfs.server.namenode.Namesystem;
 +import org.apache.hadoop.hdfs.server.protocol.*;
 +import org.apache.hadoop.ipc.ProtobufRpcEngine;
 +import org.apache.hadoop.ipc.RPC;
 +import org.apache.hadoop.ipc.WritableRpcEngine;
 +import org.apache.hadoop.net.NetUtils;
 +import org.apache.hadoop.ozone.OzoneConfiguration;
 +import org.apache.hadoop.storagecontainer.protocol.ContainerLocationProtocol;
 +import org.apache.hadoop.util.LightWeightGSet;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +
 +import java.io.IOException;
 +import java.net.InetSocketAddress;
 +import java.util.List;
 +
 +import static org.apache.hadoop.hdfs.DFSConfigKeys.*;
 +
 +/**
 + * Service that allocates storage containers and tracks their
 + * location.
 + */
 +public class StorageContainerManager
 +    implements DatanodeProtocol, ContainerLocationProtocol {
 +
 +  public static final Logger LOG =
 +      LoggerFactory.getLogger(StorageContainerManager.class);
 +
 +  private final Namesystem ns = new StorageContainerNameService();
 +  private final BlockManager blockManager;
 +
 +  private long txnId = 234;
 +
 +  /** The RPC server that listens to requests from DataNodes. */
 +  private final RPC.Server serviceRpcServer;
 +  private final InetSocketAddress serviceRPCAddress;
 +
 +  /** The RPC server that listens to requests from clients. */
 +  private final RPC.Server clientRpcServer;
 +  private final InetSocketAddress clientRpcAddress;
 +
 +  public StorageContainerManager(OzoneConfiguration conf)
 +      throws IOException {
 +    BlocksMap containerMap = new BlocksMap(
 +        LightWeightGSet.computeCapacity(2.0, "BlocksMap"),
 +        new StorageContainerMap());
 +    this.blockManager = new BlockManager(ns, conf, containerMap);
 +
 +    int handlerCount =
 +        conf.getInt(DFS_NAMENODE_HANDLER_COUNT_KEY,
 +            DFS_NAMENODE_HANDLER_COUNT_DEFAULT);
 +
 +    RPC.setProtocolEngine(conf, DatanodeProtocolPB.class,
 +        ProtobufRpcEngine.class);
 +
 +    DatanodeProtocolServerSideTranslatorPB dnProtoPbTranslator =
 +        new DatanodeProtocolServerSideTranslatorPB(this);
 +    BlockingService dnProtoPbService =
 +        DatanodeProtocolProtos.DatanodeProtocolService
 +            .newReflectiveBlockingService(dnProtoPbTranslator);
 +
 +    WritableRpcEngine.ensureInitialized();
 +
 +    InetSocketAddress serviceRpcAddr = NameNode.getServiceAddress(conf, 
false);
 +    if (serviceRpcAddr != null) {
 +      String bindHost =
 +          conf.getTrimmed(DFS_NAMENODE_SERVICE_RPC_BIND_HOST_KEY);
 +      if (bindHost == null || bindHost.isEmpty()) {
 +        bindHost = serviceRpcAddr.getHostName();
 +      }
 +      LOG.info("Service RPC server is binding to " + bindHost + ":" +
 +          serviceRpcAddr.getPort());
 +
 +      int serviceHandlerCount =
 +          conf.getInt(DFS_NAMENODE_SERVICE_HANDLER_COUNT_KEY,
 +              DFS_NAMENODE_SERVICE_HANDLER_COUNT_DEFAULT);
 +      serviceRpcServer = new RPC.Builder(conf)
 +          .setProtocol(
 +              org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolPB.class)
 +          .setInstance(dnProtoPbService)
 +          .setBindAddress(bindHost)
 +          .setPort(serviceRpcAddr.getPort())
 +          .setNumHandlers(serviceHandlerCount)
 +          .setVerbose(false)
 +          .setSecretManager(null)
 +          .build();
 +
 +      DFSUtil.addPBProtocol(conf, DatanodeProtocolPB.class, dnProtoPbService,
 +          serviceRpcServer);
 +
 +      InetSocketAddress listenAddr = serviceRpcServer.getListenerAddress();
 +      serviceRPCAddress = new InetSocketAddress(
 +          serviceRpcAddr.getHostName(), listenAddr.getPort());
 +      conf.set(DFS_NAMENODE_SERVICE_RPC_ADDRESS_KEY,
 +          NetUtils.getHostPortString(serviceRPCAddress));
 +    } else {
 +      serviceRpcServer = null;
 +      serviceRPCAddress = null;
 +    }
 +
-     InetSocketAddress rpcAddr = NameNode.getAddress(conf);
++    InetSocketAddress rpcAddr = DFSUtilClient.getNNAddress(conf);
 +    String bindHost = conf.getTrimmed(DFS_NAMENODE_RPC_BIND_HOST_KEY);
 +    if (bindHost == null || bindHost.isEmpty()) {
 +      bindHost = rpcAddr.getHostName();
 +    }
 +    LOG.info("RPC server is binding to " + bindHost + ":" + 
rpcAddr.getPort());
 +
 +    clientRpcServer = new RPC.Builder(conf)
 +        .setProtocol(
 +            org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolPB.class)
 +        .setInstance(dnProtoPbService)
 +        .setBindAddress(bindHost)
 +        .setPort(rpcAddr.getPort())
 +        .setNumHandlers(handlerCount)
 +        .setVerbose(false)
 +        .setSecretManager(null)
 +        .build();
 +
 +    DFSUtil.addPBProtocol(conf, DatanodeProtocolPB.class, dnProtoPbService,
 +        clientRpcServer);
 +
 +    // The rpc-server port can be ephemeral... ensure we have the correct info
 +    InetSocketAddress listenAddr = clientRpcServer.getListenerAddress();
 +    clientRpcAddress = new InetSocketAddress(
 +        rpcAddr.getHostName(), listenAddr.getPort());
 +    conf.set(FS_DEFAULT_NAME_KEY,
-         NameNode.getUri(clientRpcAddress).toString());
++        DFSUtilClient.getNNUri(clientRpcAddress).toString());
 +  }
 +
 +  @Override
 +  public DatanodeRegistration registerDatanode(
 +      DatanodeRegistration registration) throws IOException {
 +    ns.writeLock();
 +    try {
 +      blockManager.getDatanodeManager().registerDatanode(registration);
 +    } finally {
 +      ns.writeUnlock();
 +    }
 +    return registration;
 +  }
 +
 +  @Override
 +  public HeartbeatResponse sendHeartbeat(DatanodeRegistration registration,
 +      StorageReport[] reports, long dnCacheCapacity, long dnCacheUsed,
 +      int xmitsInProgress, int xceiverCount, int failedVolumes,
 +      VolumeFailureSummary volumeFailureSummary,
 +               boolean requestFullBlockReportLease) throws IOException {
 +    ns.readLock();
 +    try {
 +      final int maxTransfer = blockManager.getMaxReplicationStreams()
 +          - xmitsInProgress;
 +      DatanodeCommand[] cmds = blockManager.getDatanodeManager()
 +          .handleHeartbeat(registration, reports, ns.getBlockPoolId(), 0, 0,
 +              xceiverCount, maxTransfer, failedVolumes, volumeFailureSummary);
 +
 +      return new HeartbeatResponse(cmds,
 +          new NNHAStatusHeartbeat(HAServiceProtocol.HAServiceState.ACTIVE,
 +              txnId), null, 0);
 +    } finally {
 +      ns.readUnlock();
 +    }
 +  }
 +
 +  @Override
 +  public DatanodeCommand blockReport(DatanodeRegistration registration,
 +      String poolId, StorageBlockReport[] reports,
 +      BlockReportContext context) throws IOException {
 +    for (int r = 0; r < reports.length; r++) {
 +      final BlockListAsLongs storageContainerList = reports[r].getBlocks();
 +      blockManager.processReport(registration, reports[r].getStorage(),
 +          storageContainerList, context, (r == reports.length - 1));
 +    }
 +    return null;
 +  }
 +
 +  @Override
 +  public DatanodeCommand cacheReport(DatanodeRegistration registration,
 +      String poolId, List<Long> blockIds) throws IOException {
 +    throw new UnsupportedOperationException();
 +  }
 +
 +  @Override
 +  public void blockReceivedAndDeleted(DatanodeRegistration registration,
 +      String poolId, StorageReceivedDeletedBlocks[] rcvdAndDeletedBlocks)
 +      throws IOException {
 +    for(StorageReceivedDeletedBlocks r : rcvdAndDeletedBlocks) {
 +      ns.writeLock();
 +      try {
 +        blockManager.processIncrementalBlockReport(registration, r);
 +      } finally {
 +        ns.writeUnlock();
 +      }
 +    }
 +  }
 +
 +  @Override
 +  public void errorReport(DatanodeRegistration registration,
 +      int errorCode, String msg) throws IOException {
 +    String dnName =
 +        (registration == null) ? "Unknown DataNode" : registration.toString();
 +
 +    if (errorCode == DatanodeProtocol.NOTIFY) {
 +      LOG.info("Error report from " + dnName + ": " + msg);
 +      return;
 +    }
 +
 +    if (errorCode == DatanodeProtocol.DISK_ERROR) {
 +      LOG.warn("Disk error on " + dnName + ": " + msg);
 +    } else if (errorCode == DatanodeProtocol.FATAL_DISK_ERROR) {
 +      LOG.warn("Fatal disk error on " + dnName + ": " + msg);
 +      blockManager.getDatanodeManager().removeDatanode(registration);
 +    } else {
 +      LOG.info("Error report from " + dnName + ": " + msg);
 +    }
 +  }
 +
 +  @Override
 +  public NamespaceInfo versionRequest() throws IOException {
 +    ns.readLock();
 +    try {
 +      return unprotectedGetNamespaceInfo();
 +    } finally {
 +      ns.readUnlock();
 +    }
 +  }
 +
 +  private NamespaceInfo unprotectedGetNamespaceInfo() {
 +    return new NamespaceInfo(1, "random", "random", 2,
 +        NodeType.STORAGE_CONTAINER_SERVICE);
 +  }
 +
 +  @Override
 +  public void reportBadBlocks(LocatedBlock[] blocks) throws IOException {
 +    // It doesn't make sense to have LocatedBlock in this API.
 +    ns.writeLock();
 +    try {
 +      for (int i = 0; i < blocks.length; i++) {
 +        ExtendedBlock blk = blocks[i].getBlock();
 +        DatanodeInfo[] nodes = blocks[i].getLocations();
 +        String[] storageIDs = blocks[i].getStorageIDs();
 +        for (int j = 0; j < nodes.length; j++) {
 +          blockManager.findAndMarkBlockAsCorrupt(blk, nodes[j],
 +              storageIDs == null ? null: storageIDs[j],
 +              "client machine reported it");
 +        }
 +      }
 +    } finally {
 +      ns.writeUnlock();
 +    }
 +  }
 +
 +  /**
 +   * Start client and service RPC servers.
 +   */
 +  void start() {
 +    clientRpcServer.start();
 +    if (serviceRpcServer != null) {
 +      serviceRpcServer.start();
 +    }
 +  }
 +
 +  /**
 +   * Wait until the RPC servers have shutdown.
 +   */
 +  void join() throws InterruptedException {
 +    clientRpcServer.join();
 +    if (serviceRpcServer != null) {
 +      serviceRpcServer.join();
 +    }
 +  }
 +
 +  @Override
 +  public void commitBlockSynchronization(ExtendedBlock block,
 +      long newgenerationstamp, long newlength, boolean closeFile,
 +      boolean deleteblock, DatanodeID[] newtargets, String[] 
newtargetstorages)
 +      throws IOException {
 +    // Not needed for the purpose of object store
 +    throw new UnsupportedOperationException();
 +  }
 +
 +  public static void main(String[] argv) throws IOException {
 +    OzoneConfiguration conf = new OzoneConfiguration();
 +    StorageContainerManager scm = new StorageContainerManager(conf);
 +    scm.start();
 +    try {
 +      scm.join();
 +    } catch (InterruptedException e) {
 +      e.printStackTrace();
 +    }
 +  }
 +}

Reply via email to