[ 
https://issues.apache.org/jira/browse/AMBARI-22465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16266802#comment-16266802
 ] 

Tim Thorpe commented on AMBARI-22465:
-------------------------------------

[~dgrinenko] I'm not sure how Jonathan tested this but my test involved a stack 
extension linked to the stack.  When the upgrade kicked off, my extension 
version was 5.0.1.  The script version that was used for both pre and post 
upgrade was from the 5.0.1 extension.  During the pre-upgrade, I changed the 
linked extension version to 5.0.2 (and then restarted Ambari server).

The restart action used the correct version from the 5.0.2 extension but the 
post upgrade still used the scripts directory from the 5.0.1 extension.  It 
seems to me that the pre and post upgrade actions use a pre-calculated 
directory.

I have been playing around with this and trying to get my extension upgrade to 
work if I have the new extension version linked to the new stack version 
through out the upgrade process.  Part of what was complicating this is I was 
doing an HDP 2.6.2 to 2.6.3 upgrade which uses the same HDP 2.6 stack version.

> 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
>            Assignee: Dmytro Grinenko
>            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)

Reply via email to