Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 53A60200A5B for ; Wed, 25 May 2016 10:03:20 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5271A160A18; Wed, 25 May 2016 08:03:20 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 71E13160A17 for ; Wed, 25 May 2016 10:03:19 +0200 (CEST) Received: (qmail 27931 invoked by uid 500); 25 May 2016 08:03:13 -0000 Mailing-List: contact hdfs-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list hdfs-issues@hadoop.apache.org Received: (qmail 27899 invoked by uid 99); 25 May 2016 08:03:13 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 May 2016 08:03:13 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 705FA2C1F5C for ; Wed, 25 May 2016 08:03:13 +0000 (UTC) Date: Wed, 25 May 2016 08:03:13 +0000 (UTC) From: "Hadoop QA (JIRA)" To: hdfs-issues@hadoop.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HDFS-10453) ReplicationMonitor thread could stuck for long time due to the race between replication and delete of same file in a large cluster. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 25 May 2016 08:03:20 -0000 [ https://issues.apache.org/jira/browse/HDFS-10453?page=3Dcom.atlassian= .jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D1529= 9642#comment-15299642 ]=20 Hadoop QA commented on HDFS-10453: ---------------------------------- | (x) *{color:red}-1 overall{color}* | \\ \\ || Vote || Subsystem || Runtime || Comment || | {color:blue}0{color} | {color:blue} reexec {color} | {color:blue} 0m 16s = {color} | {color:blue} Docker mode activated. {color} | | {color:green}+1{color} | {color:green} @author {color} | {color:green} 0m= 0s {color} | {color:green} The patch does not contain any @author tags. {c= olor} | | {color:green}+1{color} | {color:green} test4tests {color} | {color:green}= 0m 0s {color} | {color:green} The patch appears to include 1 new or modifi= ed test files. {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}= 7m 30s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m= 50s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green}= 0m 28s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m= 59s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green}= 0m 11s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 1= m 51s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m= 9s {color} | {color:green} trunk passed {color} | | {color:green}+1{color} | {color:green} mvninstall {color} | {color:green}= 0m 53s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} compile {color} | {color:green} 0m= 47s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javac {color} | {color:green} 0m 4= 7s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} checkstyle {color} | {color:green}= 0m 27s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvnsite {color} | {color:green} 0m= 57s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} mvneclipse {color} | {color:green}= 0m 9s {color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} whitespace {color} | {color:red} 0m 0s= {color} | {color:red} The patch has 2 line(s) that end in whitespace. Use = git apply --whitespace=3Dfix. {color} | | {color:green}+1{color} | {color:green} findbugs {color} | {color:green} 1= m 58s {color} | {color:green} the patch passed {color} | | {color:green}+1{color} | {color:green} javadoc {color} | {color:green} 1m= 6s {color} | {color:green} the patch passed {color} | | {color:red}-1{color} | {color:red} unit {color} | {color:red} 82m 34s {co= lor} | {color:red} hadoop-hdfs in the patch failed. {color} | | {color:green}+1{color} | {color:green} asflicense {color} | {color:green}= 0m 19s {color} | {color:green} Patch does not generate ASF License warning= s. {color} | | {color:black}{color} | {color:black} {color} | {color:black} 103m 42s {co= lor} | {color:black} {color} | \\ \\ || Reason || Tests || | Failed junit tests | hadoop.hdfs.server.namenode.snapshot.TestSnapshotFil= eLength | | | hadoop.hdfs.TestAsyncDFSRename | \\ \\ || Subsystem || Report/Notes || | Docker | Image:yetus/hadoop:2c91fd8 | | JIRA Patch URL | https://issues.apache.org/jira/secure/attachment/1280607= 4/HDFS-10453.001.patch | | JIRA Issue | HDFS-10453 | | Optional Tests | asflicense compile javac javadoc mvninstall mvnsit= e unit findbugs checkstyle | | uname | Linux 17b64327d605 3.13.0-36-lowlatency #63-Ubuntu SMP PREEMPT We= d Sep 3 21:56:12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux | | Build tool | maven | | Personality | /testptch/hadoop/patchprocess/precommit/personality/provide= d.sh | | git revision | trunk / 28bd63e | | Default Java | 1.8.0_91 | | findbugs | v3.0.0 | | whitespace | https://builds.apache.org/job/PreCommit-HDFS-Build/15556/art= ifact/patchprocess/whitespace-eol.txt | | unit | https://builds.apache.org/job/PreCommit-HDFS-Build/15556/artifact/= patchprocess/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | unit test logs | https://builds.apache.org/job/PreCommit-HDFS-Build/1555= 6/artifact/patchprocess/patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt | | Test Results | https://builds.apache.org/job/PreCommit-HDFS-Build/15556/= testReport/ | | modules | C: hadoop-hdfs-project/hadoop-hdfs U: hadoop-hdfs-project/hadoo= p-hdfs | | Console output | https://builds.apache.org/job/PreCommit-HDFS-Build/15556= /console | | Powered by | Apache Yetus 0.2.0 http://yetus.apache.org | This message was automatically generated. > ReplicationMonitor thread could stuck for long time due to the race betwe= en replication and delete of same file in a large cluster. > -------------------------------------------------------------------------= ---------------------------------------------------------- > > Key: HDFS-10453 > URL: https://issues.apache.org/jira/browse/HDFS-10453 > Project: Hadoop HDFS > Issue Type: Bug > Components: namenode > Reporter: He Xiaoqiao > Attachments: HDFS-10453-branch-2.001.patch, HDFS-10453.001.patch > > > ReplicationMonitor thread could stuck for long time and loss data with li= ttle probability. Consider the typical scenario=EF=BC=9A > (1) create and close a file with the default replicas(3); > (2) increase replication (to 10) of the file. > (3) delete the file while ReplicationMonitor is scheduling blocks belong = to that file for replications. > if ReplicationMonitor stuck reappeared, NameNode will print log as: > {code:xml} > 2016-04-19 10:20:48,083 WARN org.apache.hadoop.hdfs.server.blockmanagemen= t.BlockPlacementPolicy: Failed to place enough replicas, still in need of 7= to reach 10 (unavailableStorages=3D[], storagePolicy=3DBlockStoragePolicy{= HOT:7, storageTypes=3D[DISK], creationFallbacks=3D[], replicationFallbacks= =3D[ARCHIVE]}, newBlock=3Dfalse) For more information, please enable DEBUG = log level on org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPo= licy > ...... > 2016-04-19 10:21:17,184 WARN org.apache.hadoop.hdfs.server.blockmanagemen= t.BlockPlacementPolicy: Failed to place enough replicas, still in need of 7= to reach 10 (unavailableStorages=3D[DISK], storagePolicy=3DBlockStoragePol= icy{HOT:7, storageTypes=3D[DISK], creationFallbacks=3D[], replicationFallba= cks=3D[ARCHIVE]}, newBlock=3Dfalse) For more information, please enable DEB= UG log level on org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacemen= tPolicy > 2016-04-19 10:21:17,184 WARN org.apache.hadoop.hdfs.protocol.BlockStorage= Policy: Failed to place enough replicas: expected size is 7 but only 0 stor= age types can be selected (replication=3D10, selected=3D[], unavailable=3D[= DISK, ARCHIVE], removed=3D[DISK, DISK, DISK, DISK, DISK, DISK, DISK], polic= y=3DBlockStoragePolicy{HOT:7, storageTypes=3D[DISK], creationFallbacks=3D[]= , replicationFallbacks=3D[ARCHIVE]}) > 2016-04-19 10:21:17,184 WARN org.apache.hadoop.hdfs.server.blockmanagemen= t.BlockPlacementPolicy: Failed to place enough replicas, still in need of 7= to reach 10 (unavailableStorages=3D[DISK, ARCHIVE], storagePolicy=3DBlockS= toragePolicy{HOT:7, storageTypes=3D[DISK], creationFallbacks=3D[], replicat= ionFallbacks=3D[ARCHIVE]}, newBlock=3Dfalse) All required storage types are= unavailable: unavailableStorages=3D[DISK, ARCHIVE], storagePolicy=3DBlock= StoragePolicy{HOT:7, storageTypes=3D[DISK], creationFallbacks=3D[], replica= tionFallbacks=3D[ARCHIVE]} > {code} > This is because 2 threads (#NameNodeRpcServer and #ReplicationMonitor) pr= ocess same block at the same moment. > (1) ReplicationMonitor#computeReplicationWorkForBlocks get blocks to repl= icate and leave the global lock. > (2) FSNamesystem#delete invoked to delete blocks then clear the reference= in blocksmap, needReplications, etc. the block's NumBytes will set NO_ACK(= Long.MAX_VALUE) which is used to indicate that the block deletion does not = need explicit ACK from the node.=20 > (3) ReplicationMonitor#computeReplicationWorkForBlocks continue to choose= Targets for the same blocks and no node will be selected after traverse who= le cluster because no node choice satisfy the goodness criteria (remaining= spaces achieve required size Long.MAX_VALUE).=20 > During of stage#3 ReplicationMonitor stuck for long time, especial in a l= arge cluster. invalidateBlocks & neededReplications continues to grow and n= o consumes. it will loss data at the worst. > This can mostly be avoided by skip chooseTarget for BlockCommand.NO_ACK b= lock and remove it from neededReplications. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org