[ 
https://issues.apache.org/jira/browse/HDFS-1542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976364#action_12976364
 ] 

Todd Lipcon commented on HDFS-1542:
-----------------------------------

Some of those failures are legitimate, because of the behavior change here.

Rather than make this breaking change to such an important API, on second 
thought, I think it makes more sense to fix this at the Configuration level. 
Looking at that code, we already build up an XML Document object before we 
output it, so there's no need to hold the Configuration lock while outputting. 
Let's use this JIRA for the new test case and I'll open a new one for the 
Configuration change.

> Deadlock in Configuration.writeXml when serialized form is larger than one 
> DFS block
> ------------------------------------------------------------------------------------
>
>                 Key: HDFS-1542
>                 URL: https://issues.apache.org/jira/browse/HDFS-1542
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: hdfs client
>    Affects Versions: 0.22.0, 0.23.0
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>            Priority: Critical
>         Attachments: deadlock.txt, hdfs-1542.txt, hdfs-1542.txt, 
> hdfs-1542.txt, hdfs1542_cdh3b3.txt, Test.java
>
>
> Configuration.writeXml holds a lock on itself and then writes the XML to an 
> output stream, during which DFSOutputStream will try to get a lock on 
> ackQueue/dataQueue. Meanwihle the DataStreamer thread will call functions 
> like conf.getInt() and deadlock against the other thread, since it could be 
> the same conf object.
> This causes a deterministic deadlock whenever the serialized form is larger 
> than block size.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to