You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ambari.apache.org by "Jonathan Hurley (JIRA)" <ji...@apache.org> on 2017/11/17 13:57:00 UTC

[jira] [Created] (AMBARI-22465) Post-Upgrade Tasks Use the Wrong Repository and Hooks Folders

Jonathan Hurley created AMBARI-22465:
----------------------------------------

             Summary: Post-Upgrade Tasks Use the Wrong Repository and Hooks Folders
                 Key: AMBARI-22465
                 URL: https://issues.apache.org/jira/browse/AMBARI-22465
             Project: Ambari
          Issue Type: Bug
    Affects Versions: 2.6.0
            Reporter: Jonathan Hurley
            Priority: Critical
             Fix For: 2.6.1


During an express upgrade, when performing an upgrade between stack versions, the wrong repository/stacks/hooks are sent down during the {{post-upgrade}} step:

{code}
      <component name="FOO">
        <pre-upgrade>
          <task xsi:type="execute" hosts="all">
            <script>scripts/upgrade.py</script>
            <function>bar</function>
          </task>
        </pre-upgrade>

        <upgrade>
          <task xsi:type="restart-task"/>
        </upgrade>

        <post-upgrade>
          <task xsi:type="execute" hosts="any">
            <script>scripts/upgrade.py</script>
            <function>baz</function>
          </task>
        </post-upgrade>
{code}

In both the {{pre-upgrade}} and {{post-upgrade}} commands, the scripts folder location refers to the old stack. The restart/start command, however, is correct.

It appears as though the problem is found here:
https://github.com/apache/ambari/blob/branch-2.6/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java#L1052-L1055

{code:title=makeActionStage()}
    // the ru_execute_tasks invokes scripts - it needs information about where
    // the scripts live and for that it should always use the target repository
    // stack
    applyRepositoryAssociatedParameters(wrapper, effectiveRepositoryVersion.getStackId(), params);
{code}

It uses the effective stack ID which during an express upgrade is the source stack of the upgrade.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)