Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
2.6.0, 2.6.1
-
None
Description
UpgradeUserKerberosDescriptor is not executed during stack upgrade due to missing target stack data.
Steps to reproduce
- Deploy cluster with Ambari version 2.6.0 and HDP version 2.4
- Storm should be installed to guarantee an error
- Do Express upgrade to HDP version 2.6
- Regenerate Keytabs.
Upon restarting Storm the following error is encountered
Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at clojure.lang.RT.classForName(RT.java:2154) at clojure.lang.RT.classForName(RT.java:2163) at clojure.lang.RT.loadClassForName(RT.java:2182) at clojure.lang.RT.load(RT.java:436) at clojure.lang.RT.load(RT.java:412) at clojure.core$load$fn__5448.invoke(core.clj:5866) at clojure.core$load.doInvoke(core.clj:5865) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5671) at clojure.core$load_lib$fn__5397.invoke(core.clj:5711) at clojure.core$load_lib.doInvoke(core.clj:5710) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:632) at clojure.core$load_libs.doInvoke(core.clj:5749) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:632) at clojure.core$require.doInvoke(core.clj:5832) at clojure.lang.RestFn.invoke(RestFn.java:408) at org.apache.storm.daemon.nimbus$loading__5340__auto____982.invoke(nimbus.clj:16) at org.apache.storm.daemon.nimbus__init.load(Unknown Source) at org.apache.storm.daemon.nimbus__init.<clinit>(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at clojure.lang.RT.classForName(RT.java:2154) at clojure.lang.RT.classForName(RT.java:2163) at clojure.lang.RT.loadClassForName(RT.java:2182) at clojure.lang.RT.load(RT.java:436) at clojure.lang.RT.load(RT.java:412) at clojure.core$load$fn__5448.invoke(core.clj:5866) at clojure.core$load.doInvoke(core.clj:5865) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.lang.Var.invoke(Var.java:379) at org.apache.storm.daemon.nimbus.<clinit>(Unknown Source) Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: backtype.storm.security.auth.KerberosPrincipalToLocal at org.apache.storm.security.auth.AuthUtils.GetPrincipalToLocalPlugin(AuthUtils.java:125) at org.apache.storm.security.auth.authorizer.ImpersonationAuthorizer.prepare(ImpersonationAuthorizer.java:54) at org.apache.storm.daemon.common$mk_authorization_handler.invoke(common.clj:417) at org.apache.storm.ui.core__init.load(Unknown Source) at org.apache.storm.ui.core__init.<clinit>(Unknown Source) ... 35 more Caused by: java.lang.ClassNotFoundException: backtype.storm.security.auth.KerberosPrincipalToLocal at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.apache.storm.security.auth.AuthUtils.GetPrincipalToLocalPlugin(AuthUtils.java:121) ... 39 more
Cause
In the following code snip, targetStackID is {null}}:
org/apache/ambari/server/serveraction/upgrades/UpgradeUserKerberosDescriptor.java:103
StackId targetStackId = getStackIdFromCommandParams(KeyNames.TARGET_STACK);
This causes the logic in UpgradeUserKerberosDescriptor to be skipped.
Solution
Change the code snip from above to
org/apache/ambari/server/serveraction/upgrades/UpgradeUserKerberosDescriptor.java:103
StackId targetStackId = cluster.getDesiredStackVersion();
NOTE: This has already been fixed in the trunk (Ambari 3.0.0).
Attachments
Attachments
Issue Links
- links to