[
https://issues.apache.org/jira/browse/HDFS-7495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14238590#comment-14238590
]
Ted Yu commented on HDFS-7495:
------------------------------
Here is one path where lock on this is not obtained first:
read() -> pread() -> hedgedFetchBlockByteRange() -> chooseDataNode() ->
getBlockAt()
> Lock inversion in DFSInputStream#getBlockAt()
> ---------------------------------------------
>
> Key: HDFS-7495
> URL: https://issues.apache.org/jira/browse/HDFS-7495
> Project: Hadoop HDFS
> Issue Type: Bug
> Reporter: Ted Yu
> Priority: Minor
>
> There're two locks: one on DFSInputStream.this , one on
> DFSInputStream.infoLock
> Normally lock is obtained on infoLock, then on DFSInputStream.infoLock
> However, such order is not observed in DFSInputStream#getBlockAt() :
> {code}
> synchronized(infoLock) {
> ...
> if (updatePosition) {
> // synchronized not strictly needed, since we only get here
> // from synchronized caller methods
> synchronized(this) {
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)