hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kan Zhang (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-5859) FindBugs : fix "wait() or sleep() with locks held" warnings in hdfs
Date Tue, 26 May 2009 02:51:45 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-5859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12712832#action_12712832
] 

Kan Zhang commented on HADOOP-5859:
-----------------------------------

> Is this done to make the code simpler? Or was there some race condition that this fixes?

I don't see any race condition so far. One potential case is calling ackQueue.size() in writeChunk()
without holding ackQueue lock, which is ok assuming int assignments are atomic. The major
reasons for refactoring the locks are 1) existing code is bit confusing. Sometimes the dataQueue
lock is used to protect accesses to not only dataQueue but also currentPacket, blockStream,
blockReplyStream, etc (see closeInternal() for example), which I think is a misuse. 2) I have
moved time-consuming operations like RPC call or writing to socket out of blocks sync'ed on
the dataQueue. So now the only times one needs to hold dataQueue or ackQueue lock is when
manipulating the queues themselves. By merging the 2 locks, code can be simpler.



> FindBugs : fix "wait() or sleep() with locks held" warnings in hdfs
> -------------------------------------------------------------------
>
>                 Key: HADOOP-5859
>                 URL: https://issues.apache.org/jira/browse/HADOOP-5859
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: dfs
>            Reporter: Kan Zhang
>            Assignee: Kan Zhang
>         Attachments: 5859-21.patch, 5859-22.patch, 5859-26.patch, 5859-4.patch, 5859-5.patch,
5859-8.patch
>
>
> This JIRA fixes the following warnings:
> SWL	org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.closeInternal() calls Thread.sleep()
with a lock held
> TLW	wait() with two locks held in org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.flushInternal()
> TLW	wait() with two locks held in org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.flushInternal()
> TLW	wait() with two locks held in org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.writeChunk(byte[],
int, int, byte[])

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


Mime
View raw message