diff --git a/hoodie-client/src/main/java/com/uber/hoodie/table/HoodieCopyOnWriteTable.java b/hoodie-client/src/main/java/com/uber/hoodie/table/HoodieCopyOnWriteTable.java index 6b9f4f6ab52cb..c4ec364ba701c 100644 --- a/hoodie-client/src/main/java/com/uber/hoodie/table/HoodieCopyOnWriteTable.java +++ b/hoodie-client/src/main/java/com/uber/hoodie/table/HoodieCopyOnWriteTable.java @@ -61,6 +61,7 @@ import java.util.stream.Collectors; import org.apache.avro.generic.GenericRecord; import org.apache.avro.generic.IndexedRecord; +import org.apache.commons.lang.StringUtils; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -315,7 +316,10 @@ protected Map deleteCleanedFiles(Map r throws IOException { logger.info("Cleaning path " + partitionPath); FileSystem fs = getMetaClient().getFs(); - FileStatus[] toBeDeleted = fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); + // FileStatus[] toBeDeleted = fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); + FileStatus[] toBeDeleted = StringUtils.isBlank(partitionPath) + ? fs.listStatus(new Path(config.getBasePath()), filter) : + fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); for (FileStatus file : toBeDeleted) { boolean success = fs.delete(file.getPath(), false); results.put(file, success); @@ -340,7 +344,10 @@ protected Map deleteCleanedFiles(Map r } return false; }; - FileStatus[] toBeDeleted = fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); + // FileStatus[] toBeDeleted = fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); + FileStatus[] toBeDeleted = StringUtils.isBlank(partitionPath) + ? fs.listStatus(new Path(config.getBasePath()), filter) : + fs.listStatus(new Path(config.getBasePath(), partitionPath), filter); for (FileStatus file : toBeDeleted) { boolean success = fs.delete(file.getPath(), false); results.put(file, success); diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/AbstractTableFileSystemView.java b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/AbstractTableFileSystemView.java index 8b05b695b2726..a3cee66c62a76 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/AbstractTableFileSystemView.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/AbstractTableFileSystemView.java @@ -51,6 +51,8 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; + +import org.apache.commons.lang.StringUtils; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.Path; import org.apache.log4j.LogManager; @@ -216,7 +218,9 @@ private void ensurePartitionLoadedCorrectly(String partition) { log.info("Building file system view for partition (" + partitionPathStr + ")"); // Create the path if it does not exist already - Path partitionPath = FSUtils.getPartitionPath(metaClient.getBasePath(), partitionPathStr); + Path partitionPath = StringUtils.isBlank(partitionPathStr) + ? new Path(metaClient.getBasePath()) : new Path(metaClient.getBasePath(), partitionPathStr); + // Path partitionPath = new Path(metaClient.getBasePath(), partitionPathStr); FSUtils.createPathIfNotExists(metaClient.getFs(), partitionPath); long beginLsTs = System.currentTimeMillis(); FileStatus[] statuses = metaClient.getFs().listStatus(partitionPath);