You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Liang Xie (JIRA)" <ji...@apache.org> on 2014/07/17 06:31:05 UTC

[jira] [Created] (HDFS-6698) try to optimize DFSInputStream.getFileLength()

Liang Xie created HDFS-6698:
-------------------------------

             Summary: try to optimize DFSInputStream.getFileLength()
                 Key: HDFS-6698
                 URL: https://issues.apache.org/jira/browse/HDFS-6698
             Project: Hadoop HDFS
          Issue Type: Improvement
          Components: hdfs-client
    Affects Versions: 3.0.0
            Reporter: Liang Xie
            Assignee: Liang Xie


HBase prefers to invoke read() serving scan request, and invoke pread() serving get reqeust. Because pread() almost holds no lock.
Let's image there's a read() running, because the definition is:
{code}
public synchronized int read
{code}
so no other read() request could run concurrently, this is known, but pread() also could not run...  because:
{code}
  public int read(long position, byte[] buffer, int offset, int length)
    throws IOException {
    // sanity checks
    dfsClient.checkOpen();
    if (closed) {
      throw new IOException("Stream closed");
    }
    failures = 0;
    long filelen = getFileLength();
{code}

the getFileLength() also needs lock.  so we need to figure out a no lock impl for getFileLength() before HBase multi stream feature done. [~saint.ack@gmail.com]



--
This message was sent by Atlassian JIRA
(v6.2#6252)