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

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

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment