diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java index 7207498ff196..695982f361c5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMetaStoreChecker.java @@ -363,16 +363,18 @@ private void getAllLeafDirs(Path basePath, Set allDirs, FileSystem fs) throws IOException { FileStatus[] statuses = fs.listStatus(basePath); - - if (statuses.length == 0) { - allDirs.add(basePath); - } + boolean directoryFound=false; for (FileStatus status : statuses) { if (status.isDir()) { + directoryFound = true; getAllLeafDirs(status.getPath(), allDirs, fs); } } + + if(!directoryFound){ + allDirs.add(basePath); + } } } diff --git a/ql/src/test/queries/clientpositive/repair.q b/ql/src/test/queries/clientpositive/repair.q index 5da6a988d731..2431c1bbca85 100644 --- a/ql/src/test/queries/clientpositive/repair.q +++ b/ql/src/test/queries/clientpositive/repair.q @@ -6,6 +6,7 @@ MSCK TABLE repairtable; dfs -mkdir ../build/ql/test/data/warehouse/repairtable/p1=a/p2=a; dfs -mkdir ../build/ql/test/data/warehouse/repairtable/p1=b/p2=a; +dfs -touchz ../build/ql/test/data/warehouse/repairtable/p1=b/p2=a/datafile; MSCK TABLE repairtable;