You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Ravi Prakash (JIRA)" <ji...@apache.org> on 2015/05/08 20:26:01 UTC

[jira] [Commented] (HDFS-1605) Convert DFSInputStream synchronized sections to a ReadWrite lock

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