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 c860dd5181..aaac797b53 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 @@ -25,6 +25,7 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import java.util.EnumSet; import org.apache.commons.logging.Log; @@ -651,15 +652,16 @@ READLINK3Response readlink(XDR xdr, SecurityHandler securityHandler, } int rtmax = config.getInt(NfsConfigKeys.DFS_NFS_MAX_READ_TRANSFER_SIZE_KEY, NfsConfigKeys.DFS_NFS_MAX_READ_TRANSFER_SIZE_DEFAULT); - if (rtmax < target.getBytes().length) { - LOG.error("Link size: " + target.getBytes().length + if (rtmax < target.getBytes(Charset.forName("UTF-8")).length) { + LOG.error("Link size: " + + target.getBytes(Charset.forName("UTF-8")).length + " is larger than max transfer size: " + rtmax); return new READLINK3Response(Nfs3Status.NFS3ERR_IO, postOpAttr, new byte[0]); } return new READLINK3Response(Nfs3Status.NFS3_OK, postOpAttr, - target.getBytes()); + target.getBytes(Charset.forName("UTF-8"))); } catch (IOException e) { LOG.warn("Readlink error: " + e.getClass(), e); @@ -1462,7 +1464,8 @@ private DirectoryListing listPaths(DFSClient dfsClient, String dirFileIdPath, throw io; } // This happens when startAfter was just deleted - LOG.info("Cookie couldn't be found: " + new String(startAfter) + LOG.info("Cookie couldn't be found: " + + new String(startAfter, Charset.forName("UTF-8")) + ", do listing from beginning"); dlisting = dfsClient .listPaths(dirFileIdPath, HdfsFileStatus.EMPTY_NAME); @@ -1571,7 +1574,7 @@ public READDIR3Response readdir(XDR xdr, SecurityHandler securityHandler, startAfter = HdfsFileStatus.EMPTY_NAME; } else { String inodeIdPath = Nfs3Utils.getFileIdPath(cookie); - startAfter = inodeIdPath.getBytes(); + startAfter = inodeIdPath.getBytes(Charset.forName("UTF-8")); } dlisting = listPaths(dfsClient, dirFileIdPath, startAfter); @@ -1733,7 +1736,7 @@ READDIRPLUS3Response readdirplus(XDR xdr, SecurityHandler securityHandler, startAfter = HdfsFileStatus.EMPTY_NAME; } else { String inodeIdPath = Nfs3Utils.getFileIdPath(cookie); - startAfter = inodeIdPath.getBytes(); + startAfter = inodeIdPath.getBytes(Charset.forName("UTF-8")); } dlisting = listPaths(dfsClient, dirFileIdPath, startAfter); diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index d1414399ac..9f3f9ee23b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -561,6 +561,9 @@ Release 2.7.0 - UNRELEASED HDFS-7481. Add ACL indicator to the "Permission Denied" exception. (vinayakumarb) + HDFS-7502. Fix findbugs warning in hdfs-nfs project. + (Brandon Li via wheat9) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES