HBASE-27754 generateMissingTableDescriptorFile should throw write permission error and fail (#114)
diff --git a/hbase-hbck2/src/main/java/org/apache/hbase/HBCKFsTableDescriptors.java b/hbase-hbck2/src/main/java/org/apache/hbase/HBCKFsTableDescriptors.java
index 1fe2cad..0c07f95 100644
--- a/hbase-hbck2/src/main/java/org/apache/hbase/HBCKFsTableDescriptors.java
+++ b/hbase-hbck2/src/main/java/org/apache/hbase/HBCKFsTableDescriptors.java
@@ -36,6 +36,7 @@
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.exceptions.DeserializationException;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.security.AccessControlException;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
@@ -369,6 +370,11 @@
}
LOG.debug("Wrote into " + tableInfoDirPath);
} catch (IOException ioe) {
+ // fail-fast and get out of retry loop as user does not have privilege to write to hdfs
+ // hence, no point in retrying
+ if(ioe instanceof AccessControlException){
+ throw ioe;
+ }
// Presume clash of names or something; go around again.
LOG.debug("Failed write and/or rename; retrying", ioe);
if (!HBCKFsUtils.deleteDirectory(fs, tempPath)) {