[ https://issues.apache.org/jira/browse/HDFS-14637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16890562#comment-16890562 ]
Hadoop QA commented on HDFS-14637: ---------------------------------- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 1m 22s{color} | {color:blue} Docker mode activated. {color} | || || || || {color:brown} Prechecks {color} || | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m 0s{color} | {color:green} The patch does not contain any @author tags. {color} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green} 0m 0s{color} | {color:green} The patch appears to include 5 new or modified test files. {color} | || || || || {color:brown} trunk Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 28s{color} | {color:blue} Maven dependency ordering for branch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 20m 37s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 18m 43s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green} 2m 26s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 56s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 16m 44s{color} | {color:green} branch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 5s{color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 24s{color} | {color:green} trunk passed {color} | || || || || {color:brown} Patch Compile Tests {color} || | {color:blue}0{color} | {color:blue} mvndep {color} | {color:blue} 0m 23s{color} | {color:blue} Maven dependency ordering for patch {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green} 1m 29s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 16m 17s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 16m 17s{color} | {color:green} the patch passed {color} | | {color:orange}-0{color} | {color:orange} checkstyle {color} | {color:orange} 2m 25s{color} | {color:orange} root: The patch generated 1 new + 265 unchanged - 1 fixed = 266 total (was 266) {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 1m 52s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} whitespace {color} | {color:green} 0m 0s{color} | {color:green} The patch has no whitespace issues. {color} | | {color:green}+1{color} | {color:green} shadedclient {color} | {color:green} 11m 45s{color} | {color:green} patch has no errors when building and testing our client artifacts. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 3m 19s{color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m 25s{color} | {color:green} the patch passed {color} | || || || || {color:brown} Other Tests {color} || | {color:red}-1{color} | {color:red} unit {color} | {color:red}117m 20s{color} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} unit {color} | {color:green} 7m 47s{color} | {color:green} hadoop-dynamometer-infra in the patch passed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green} 1m 3s{color} | {color:green} The patch does not generate ASF License warnings. {color} | | {color:black}{color} | {color:black} {color} | {color:black}231m 16s{color} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.TestAppendSnapshotTruncate | | | hadoop.hdfs.TestErasureCodingMultipleRacks | | | hadoop.hdfs.server.namenode.TestReconstructStripedBlocks | | | hadoop.hdfs.server.datanode.TestDirectoryScanner | | | hadoop.hdfs.server.blockmanagement.TestBlocksWithNotEnoughRacks | | | hadoop.hdfs.server.datanode.TestDataNodeHotSwapVolumes | | | hadoop.hdfs.TestErasureCodingPoliciesWithRandomECPolicy | | | hadoop.hdfs.server.datanode.TestDataNodeMetrics | | | hadoop.hdfs.client.impl.TestBlockReaderLocal | \\ \\ || Subsystem || Report/Notes || | Docker | Client=18.09.7 Server=18.09.7 Image:yetus/hadoop:bdbca0e53b4 | | JIRA Issue | HDFS-14637 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/12975437/HDFS-14637.003.patch | | Optional Tests | dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient findbugs checkstyle | | uname | Linux 4cc33c52a5bd 4.15.0-52-generic #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/patchprocess/precommit/personality/provided.sh | | git revision | trunk / cdc36fe | | maven | version: Apache Maven 3.3.9 | | Default Java | 1.8.0_212 | | findbugs | v3.1.0-RC1 | | checkstyle | https://builds.apache.org/job/PreCommit-HDFS-Build/27279/artifact/out/diff-checkstyle-root.txt | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/27279/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/27279/testReport/ | | Max. process+thread count | 2545 (vs. ulimit of 5500) | | modules | C: hadoop-hdfs-project/hadoop-hdfs hadoop-tools/hadoop-dynamometer/hadoop-dynamometer-infra U: . | | Console output | https://builds.apache.org/job/PreCommit-HDFS-Build/27279/console | | Powered by | Apache Yetus 0.8.0 http://yetus.apache.org | This message was automatically generated. > Namenode may not replicate blocks to meet the policy after enabling > upgradeDomain > --------------------------------------------------------------------------------- > > Key: HDFS-14637 > URL: https://issues.apache.org/jira/browse/HDFS-14637 > Project: Hadoop HDFS > Issue Type: Bug > Components: namenode > Affects Versions: 3.3.0 > Reporter: Stephen O'Donnell > Assignee: Stephen O'Donnell > Priority: Major > Attachments: HDFS-14637.001.patch, HDFS-14637.002.patch, > HDFS-14637.003.patch > > > After changing the network topology or placement policy on a cluster and > restarting the namenode, the namenode will scan all blocks on the cluster at > startup, and check if they meet the current placement policy. If they do not, > they are added to the replication queue and the namenode will arrange for > them to be replicated to ensure the placement policy is used. > If you start with a cluster with no UpgradeDomain, and then enable > UpgradeDomain, then on restart the NN does notice all the blocks violate the > placement policy and it adds them to the replication queue. I believe there > are some issues in the logic that prevents the blocks from replicating > depending on the setup: > With UD enabled, but no racks configured, and possible on a 2 rack cluster, > the queued replication work never makes any progress, as in > blockManager.validateReconstructionWork(), it checks to see if the new > replica increases the number of racks, and if it does not, it skips it and > tries again later. > {code:java} > DatanodeStorageInfo[] targets = rw.getTargets(); > if ((numReplicas.liveReplicas() >= requiredRedundancy) && > (!isPlacementPolicySatisfied(block)) ) { > if (!isInNewRack(rw.getSrcNodes(), targets[0].getDatanodeDescriptor())) { > // No use continuing, unless a new rack in this case > return false; > } > // mark that the reconstruction work is to replicate internal block to a > // new rack. > rw.setNotEnoughRack(); > } > {code} > Additionally, in blockManager.scheduleReconstruction() is there some logic > that sets the number of new replicas required to one, if the live replicas >= > requiredReduncancy: > {code:java} > int additionalReplRequired; > if (numReplicas.liveReplicas() < requiredRedundancy) { > additionalReplRequired = requiredRedundancy - numReplicas.liveReplicas() > - pendingNum; > } else { > additionalReplRequired = 1; // Needed on a new rack > }{code} > With UD, it is possible for 2 new replicas to be needed to meet the block > placement policy, if all existing replicas are on nodes with the same domain. > For traditional '2 rack redundancy', only 1 new replica would ever have been > needed in this scenario. -- This message was sent by Atlassian JIRA (v7.6.14#76016) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org