[ 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)