diff --git a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java index 91d066e723d..d96babfdb41 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java @@ -1584,8 +1584,7 @@ public class RpcProgramNfs3 extends RpcProgram implements Nfs3Interface { */ HdfsFileStatus[] fstatus = dlisting.getPartialListing(); int n = (int) Math.min(fstatus.length, count-2); - boolean eof = (n < fstatus.length) ? false : (dlisting - .getRemainingEntries() == 0); + boolean eof = (n >= fstatus.length) && !dlisting.hasMore(); Entry3[] entries; if (cookie == 0) { @@ -1733,8 +1732,7 @@ public class RpcProgramNfs3 extends RpcProgram implements Nfs3Interface { // Set up the dirents in the response HdfsFileStatus[] fstatus = dlisting.getPartialListing(); int n = (int) Math.min(fstatus.length, dirCount-2); - boolean eof = (n < fstatus.length) ? false : (dlisting - .getRemainingEntries() == 0); + boolean eof = (n >= fstatus.length) && !dlisting.hasMore(); READDIRPLUS3Response.EntryPlus3[] entries; if (cookie == 0) { diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 63d6b6d13be..5de28a280f7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -76,6 +76,8 @@ Release 2.7.0 - UNRELEASED HDFS-6917. Add an hdfs debug command to validate blocks, call recoverlease, etc. (cmccabe) + HDFS-7356. Use DirectoryListing.hasMore() directly in nfs. (Li Lu via jing9) + OPTIMIZATIONS BUG FIXES