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 91d066e723..d96babfdb4 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 READDIR3Response readdir(XDR xdr, SecurityHandler securityHandler, */ 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 @@ READDIRPLUS3Response readdirplus(XDR xdr, SecurityHandler securityHandler, // 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 8790951ed1..b4e0fa1ee6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -331,6 +331,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