diff --git ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java index 3c508ec6cf..dd79858b72 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/AcidUtils.java @@ -1361,6 +1361,7 @@ else if (prev != null && next.maxWriteId == prev.maxWriteId final Path path) throws IOException { try { Map dirToSnapshots = new HashMap(); + Map fileStatusMap = new HashMap<>(); RemoteIterator itr = fs.listFiles(path, true); while (itr.hasNext()) { FileStatus fStatus = itr.next(); @@ -1376,9 +1377,10 @@ else if (prev != null && next.maxWriteId == prev.maxWriteId Path parentDirPath = fPath.getParent(); if (acidTempDirFilter.accept(parentDirPath)) { HdfsDirSnapshot dirSnapshot = dirToSnapshots.get(parentDirPath); - FileStatus parentDirFStatus = null; + FileStatus parentDirFStatus = fileStatusMap.get(parentDirPath); if (!parentDirPath.equals(path)) { parentDirFStatus = fs.getFileStatus(parentDirPath); + fileStatusMap.put(parentDirPath, parentDirFStatus); } if (dirSnapshot == null) { dirSnapshot = new HdfsDirSnapshotImpl(parentDirPath, parentDirFStatus);