diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HAUtils.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HAUtils.java index 5740450419c..1e400d0c797 100644 --- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HAUtils.java +++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/HAUtils.java @@ -414,7 +414,12 @@ public RetryAction shouldRetry(Exception e, int retries, int failovers, boolean return retriableTask.call(); } catch (Exception ex) { if (containsAccessControlException(ex)) { - throw new AccessControlException(); + Throwable cause = ex; + while (cause != null && !(cause instanceof AccessControlException)) { + cause = cause.getCause(); + } + throw new IOException( + cause != null ? cause.getMessage() : ex.getMessage(), ex); } throw new SCMSecurityException("Unable to obtain complete CA list", ex); } diff --git a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java index 3a130945ced..73b76eb1436 100644 --- a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java +++ b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java @@ -122,7 +122,7 @@ private SCMNodeInfo findLeaderNode(ScmClient scmClient) throws IOException { return null; } catch (IOException e) { - throw new IOException("Could not determine leader node", e); + throw new IOException("Could not determine leader node. " + e.getMessage(), e); } } diff --git a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java index d6e0840cb7f..e4c66e6f4d1 100644 --- a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java +++ b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/container/InfoSubcommand.java @@ -112,7 +112,7 @@ private void printDetails(ScmClient scmClient, long containerID) throws IOExcept container = scmClient.getContainerWithPipeline(containerID); Objects.requireNonNull(container, "Container cannot be null"); } catch (IOException e) { - printError("Unable to retrieve the container details for " + containerID); + printError("Unable to retrieve the container details for " + containerID + ". " + e.getMessage()); return; }