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)