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....@gmail.com] -- This message was sent by Atlassian JIRA (v6.2#6252)