[ https://issues.apache.org/jira/browse/HDFS-4851?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13695207#comment-13695207 ]
Hadoop QA commented on HDFS-4851: --------------------------------- {color:red}-1 overall{color}. Here are the results of testing the latest attachment http://issues.apache.org/jira/secure/attachment/12589794/hdfs-4851-1.patch against trunk revision . {color:green}+1 @author{color}. The patch does not contain any @author tags. {color:red}-1 tests included{color}. The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch. {color:green}+1 javac{color}. The applied patch does not increase the total number of javac compiler warnings. {color:green}+1 javadoc{color}. The javadoc tool did not generate any warning messages. {color:green}+1 eclipse:eclipse{color}. The patch built with eclipse:eclipse. {color:green}+1 findbugs{color}. The patch does not introduce any new Findbugs (version 1.3.9) warnings. {color:green}+1 release audit{color}. The applied patch does not increase the total number of release audit warnings. {color:green}+1 core tests{color}. The patch passed unit tests in hadoop-hdfs-project/hadoop-hdfs. {color:green}+1 contrib tests{color}. The patch passed contrib unit tests. Test results: https://builds.apache.org/job/PreCommit-HDFS-Build/4574//testReport/ Console output: https://builds.apache.org/job/PreCommit-HDFS-Build/4574//console This message is automatically generated. > Deadlock in pipeline recovery > ----------------------------- > > Key: HDFS-4851 > URL: https://issues.apache.org/jira/browse/HDFS-4851 > Project: Hadoop HDFS > Issue Type: Bug > Components: datanode > Affects Versions: 3.0.0, 2.0.4-alpha > Reporter: Andrew Wang > Assignee: Andrew Wang > Attachments: hdfs-4851-1.patch > > > Here's a deadlock scenario that cropped up during pipeline recovery, debugged > through jstacks. Todd tipped me off to this one. > # Pipeline fails, client initiates recovery. We have the old leftover > DataXceiver, and a new one doing recovery. > # New DataXceiver does {{recoverRbw}}, grabbing the {{FsDatasetImpl}} lock > # Old DataXceiver is in {{BlockReceiver#computePartialChunkCrc}}, calls > {{FsDatasetImpl#getTmpInputStreams}} and blocks on the {{FsDatasetImpl}} lock. > # New DataXceiver {{ReplicaInPipeline#stopWriter}}, interrupting the old > DataXceiver and then joining on it. > # Boom, deadlock. New DX holds the {{FsDatasetImpl}} lock and is joining on > the old DX, which is in turn waiting on the {{FsDatasetImpl}} lock. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira