[
https://issues.apache.org/jira/browse/AMBARI-21854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16173207#comment-16173207
]
Hudson commented on AMBARI-21854:
---------------------------------
FAILURE: Integrated in Jenkins build Ambari-branch-2.6 #253 (See
[https://builds.apache.org/job/Ambari-branch-2.6/253/])
AMBARI-21854. Adapt Repository Files For Existing Deployments (dgrinenko
(dlysnichenko:
[http://git-wip-us.apache.org/repos/asf?p=ambari.git&a=commit&h=412c6cac4416cb676046dd6792ccb962441febf5])
* (edit)
ambari-common/src/main/python/resource_management/libraries/script/script.py
* (edit) ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql
* (edit)
ambari-server/src/main/resources/custom_actions/scripts/install_packages.py
* (edit) ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql
* (edit) ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql
* (edit)
ambari-common/src/main/python/resource_management/libraries/functions/repository_util.py
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariActionExecutionHelper.java
* (edit)
ambari-common/src/main/python/resource_management/core/providers/package/apt.py
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/RepositoryVersionHelper.java
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
* (edit)
ambari-common/src/main/python/resource_management/core/providers/package/__init__.py
* (edit)
ambari-common/src/main/python/resource_management/core/providers/package/zypper.py
* (edit) ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/agent/CommandRepository.java
* (edit) ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/orm/entities/RepositoryVersionEntity.java
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog260.java
* (edit) ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql
* (edit)
ambari-server/src/main/java/org/apache/ambari/server/agent/ExecutionCommand.java
* (edit)
ambari-common/src/main/python/resource_management/core/providers/package/yumrpm.py
> Adapt Repository Files For Existing Deployments
> -----------------------------------------------
>
> Key: AMBARI-21854
> URL: https://issues.apache.org/jira/browse/AMBARI-21854
> Project: Ambari
> Issue Type: Bug
> Components: ambari-agent
> Affects Versions: 2.6.0
> Reporter: Jonathan Hurley
> Assignee: Dmytro Grinenko
> Priority: Blocker
> Fix For: 2.6.0
>
>
> The recent changes in repository creation and management (AMBARI-20871,
> AMBARI-21719, AMBARI-21398) has caused a regression with previously installed
> packages. Using RPM as an example, consider the following case:
> - A version of Ambari is installed which writes out a repo file for HDP. This
> file could be named anything and may vary depending on the version of Ambari
> being used. It could be {{hdp.repo}}, {{hdp-2.6.repo}}, or really any
> variation. The point is that it's not predictable.
> - The repo ID inside of the file can also be anything. In some cases it may
> be "HDP-2.6.2.0" or "HDP-2.6.2.0-193". But once again, the point is that it's
> not predictable.
> - What is known is that packages previously installed with this repo are now
> associated with it permanently:
> {code}
> [root@c6401 yum.repos.d]# yum list installed | grep hive2
> hive2_2_6_2_0_193.noarch 2.1.0.2.6.2.0-193
> @HDP-2.6.2.0-193
> hive2_2_6_2_0_193-jdbc.noarch 2.1.0.2.6.2.0-193
> @HDP-2.6.2.0-193
> {code}
> - Ambari has now changed the way in which we create repo files and the naming
> scheme we use for the repo ID. Consider a fresh installation of Ambari 2.6:
> {code:title=/etc/yum.repos.d/ambari-hdp-1.repo}
> [HDP-2.5-repo-1]
> name=HDP-2.5-repo-1
> baseurl=http://repo.ambari.apache.org/hdp/centos6/HDP-2.5.0.0-1237
> path=/
> enabled=1
> gpgcheck=0
> [HDP-UTILS-1.1.0.21-repo-1]
> name=HDP-UTILS-1.1.0.21-repo-1
> baseurl=http://repo.ambari.apache.org/hdp/centos6/HDP-UTILS-1.1.0.21
> path=/
> enabled=1
> gpgcheck=0
> {code}
> -- "1" is the ID of the repo_version entry in Ambari - so the filename is
> ambari-<stack-name>-<repo-version-id>
> -- Yum Repo ID (HDP-2.5-repo-1) - the repo name used in the file is
> <stack-name>-<stack-version>-repo-<repo-version-id>
> This presents a problem when upgrading a prior version of Ambari. Although
> there is still only 1 record in the {{repo_version}} table, we create a 2nd
> repo file in {{/etc/yum.repos.d}} with an entirely different repository ID
> and name. Because the packages were previously installed with another repo
> identifier, our new code which restricts to the repository associated with
> the command, can't find packages and produces an error.
> - This prevents new components from being added to hosts
> - Client restarts and reinstalls fail
> - Sysprepped Hosts can't be managed
> The {{yum}} command doesn't really allow for us to determine the packages
> installed from other repos nor does it allow the reassignment of installed
> packages from one repo to another.
> Consider the case where Hive is already installed and then the cluster is
> upgraded to Ambari 2.6. When we go to add new hive components, we are
> restricting the packages to that of the current repo ({{HDP\-2.5\-repo\-1}}):
> {code}
> [root@c6401 ~]# yum list available --disablerepo=*
> --enablerepo=HDP-2.5-repo-1 | grep hive2
> hive2.noarch 2.1.0.2.5.0.0-1237.el6
> HDP-2.5-repo-1
> hive2-jdbc.noarch 2.1.0.2.5.0.0-1237.el6
> HDP-2.5-repo-1
> {code}
> Unfortunately, this misses the hive already installed since they are
> associated with another repo ({{@HDP\-2.6.2.0\-193}})
> {code}
> hive2_2_6_2_0_193.noarch 2.1.0.2.6.2.0-193
> @HDP-2.6.2.0-193
> hive2_2_6_2_0_193-jdbc.noarch 2.1.0.2.6.2.0-193
> @HDP-2.6.2.0-193
> {code}
> I think the following needs to be done to fix this situation:
> - If the repo file exists, then do nothing if the file contents match
> - If the repo file does not exist, then scan {{/etc/yum.repos.d}} to see if
> any repos match the URL. If we hit a match, then we need to scan the repo to
> extract the old, original repository ID
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)