From 093efd30bd0af12aadd702ae815163f395406476 Mon Sep 17 00:00:00 2001 From: "Jain, Nihal" Date: Mon, 27 Mar 2023 21:35:01 +0530 Subject: [PATCH] HBASE-27754 generateMissingTableDescriptorFile should throw write permission error and fail --- .../main/java/org/apache/hbase/HBCKFsTableDescriptors.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 1fe2cad6..0c07f956 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 @@ private static Path writeTableDescriptor(final FileSystem fs, } 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)) {