SLIDER-1065 kdiag test failing on host without default realm
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/05a1cc4f Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/05a1cc4f Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/05a1cc4f Branch: refs/heads/develop Commit: 05a1cc4ff213f48c84147b1ec46207ec9db73939 Parents: 5e430f3 Author: Steve Loughran <ste...@apache.org> Authored: Mon Jan 18 18:05:35 2016 -0800 Committer: Steve Loughran <ste...@apache.org> Committed: Mon Jan 18 18:05:35 2016 -0800 ---------------------------------------------------------------------- .../org/apache/hadoop/security/KerberosDiags.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/05a1cc4f/slider-core/src/main/java/org/apache/hadoop/security/KerberosDiags.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/hadoop/security/KerberosDiags.java b/slider-core/src/main/java/org/apache/hadoop/security/KerberosDiags.java index aa7eec6..d43b966 100644 --- a/slider-core/src/main/java/org/apache/hadoop/security/KerberosDiags.java +++ b/slider-core/src/main/java/org/apache/hadoop/security/KerberosDiags.java @@ -77,6 +77,7 @@ public class KerberosDiags implements Closeable { public static final String HADOOP_AUTHENTICATION_IS_DISABLED = "Hadoop authentication is disabled"; public static final String UNSET = "(unset)"; + public static final String NO_DEFAULT_REALM = "Cannot locate default realm"; private final Configuration conf; private final List<String> services; @@ -250,12 +251,22 @@ public class KerberosDiags implements Closeable { println("Default Realm = %s", getDefaultRealm()); } catch (ClassNotFoundException - | InvocationTargetException | IllegalAccessException | NoSuchMethodException e) { throw new KerberosDiagsFailure(CAT_JVM, e, - "Failed to get default realm"); + "Failed to invoke krb5.Config.getDefaultRealm: %s", e); + } catch (InvocationTargetException e) { + if (e.toString().contains(NO_DEFAULT_REALM)) { + // exception raised if there is no default realm. This is not + // always a problem, so downgrade to a message. + println("Host has no default realm"); + LOG.debug(e.toString(), e); + } else { + Throwable cause = e.getCause() != null ? e.getCause() : e; + throw new KerberosDiagsFailure(CAT_JVM, cause, + "Failed get default realm: %s", cause); + } } }