From fd01240c94afc2d65c541c16b612a033da4b3b99 Mon Sep 17 00:00:00 2001 From: Qiyuan Gong Date: Mon, 8 Oct 2018 15:12:52 +0800 Subject: [PATCH] Fix length problem in dfs command --- .../hadoop/filesystem/SmartFileSystem.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/smart-hadoop-support/smart-hadoop-client-2.7/src/main/java/org/smartdata/hadoop/filesystem/SmartFileSystem.java b/smart-hadoop-support/smart-hadoop-client-2.7/src/main/java/org/smartdata/hadoop/filesystem/SmartFileSystem.java index 1865c00a3af..c66c3683763 100644 --- a/smart-hadoop-support/smart-hadoop-client-2.7/src/main/java/org/smartdata/hadoop/filesystem/SmartFileSystem.java +++ b/smart-hadoop-support/smart-hadoop-client-2.7/src/main/java/org/smartdata/hadoop/filesystem/SmartFileSystem.java @@ -221,7 +221,16 @@ public FileStatus[] listStatus(Path p) throws IOException { newStatus.add(status); } } else { - newStatus.add(status); + FileState fileState = smartDFSClient.getFileState(getPathName(status.getPath())); + if (fileState instanceof CompressionFileState) { + long len = ((CompressionFileState) fileState).getOriginalLength(); + newStatus.add(new FileStatus(len, status.isDirectory(), status.getReplication(), + status.getBlockSize(), status.getModificationTime(), status.getAccessTime(), + status.getPermission(), status.getOwner(), status.getGroup(), + status.isSymlink() ? status.getSymlink() : null, status.getPath())); + } else { + newStatus.add(status); + } } } return newStatus.toArray(new FileStatus[oldStatus.length]); @@ -297,6 +306,12 @@ public FileStatus getFileLinkStatus(final Path f) throws IOException { if (fileState instanceof CompactFileState) { fileStatus = getFileStatus(target); } + } else { + Path target = getLinkTarget(f); + FileState fileState = smartDFSClient.getFileState(getPathName(target)); + if (fileState instanceof CompressionFileState) { + fileStatus = getFileStatus(target); + } } return fileStatus; }