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

Ravi Prakash commented on HDFS-1605:
------------------------------------

Thanks for the patch [~kartheek]
I'm afraid we may have changed the synchronization model for DFSInputStream in 
this patch. For example, earlier 2 threads: one accessing getCurrentDatanode() 
and another seekToNewSource() ; would have synchronized on a single lock. 
However now, the two threads could proceed at the same time and hence there's a 
race condition on currentNode. Is my understanding correct?

> Convert DFSInputStream synchronized sections to a ReadWrite lock
> ----------------------------------------------------------------
>
>                 Key: HDFS-1605
>                 URL: https://issues.apache.org/jira/browse/HDFS-1605
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: hdfs-client
>            Reporter: dhruba borthakur
>            Assignee: dhruba borthakur
>              Labels: BB2015-05-RFC
>         Attachments: DFSClientRWlock.1.txt, DFSClientRWlock.3.txt, 
> HADOOP-1605-trunk.patch, HDFS-1605.txt
>
>
> Hbase does concurrent preads from multiple threads to different blocks of the 
> same hdfs file. Each of these pread calls invoke 
> DFSInputStream.getFileLength() and DFSInputStream.getBlockAt(). These methods 
> are "synchronized", thus causing all the concurrent threads to serialize. It 
> would help performance to convert this to a Read/Write lock



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to