Uploaded image for project: 'Ambari'
  1. Ambari
  2. AMBARI-22693

UpgradeUserKerberosDescriptor is not executed during stack upgrade due to missing target stack data

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 2.6.0, 2.6.1
    • 2.6.2
    • ambari-server
    • None

    Description

      UpgradeUserKerberosDescriptor is not executed during stack upgrade due to missing target stack data.

      Steps to reproduce

      1. Deploy cluster with Ambari version 2.6.0 and HDP version 2.4
        • Storm should be installed to guarantee an error
      2. Do Express upgrade to HDP version 2.6
      3. 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

        1. AMBARI-22693_branch-2.6.patch
          5 kB
          Robert Levas

        Issue Links

          Activity

            People

              rlevas Robert Levas
              rlevas Robert Levas
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: