Bug 556469

Summary: Update to 11.3 removes one old repo from 11.2
Product: [openSUSE] openSUSE 11.3 Reporter: Michael Schröder <mls>
Component: YaST2Assignee: Lukas Ocilka <locilka>
Status: RESOLVED FEATURE QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P2 - High CC: coolo, locilka, lslezak, ma, Markus.Elfring
Version: Final   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2log
y2log from update to 11.3

Description Michael Schröder 2009-11-18 10:18:15 UTC
The update to 11.2 deletes all old repos (and backups them to a place no user knows) instead of just disabling them. The is bad because it makes it hard
for the user to just change the distribution name to update the repo urls.

Furthermore it deletes the repos by just deleting the .repo file instead of using libzypp to delete them. Thus, all cached rpms/repository metadata/solv files in /var/cache/zypp stay on disk.
Comment 1 Markus Elfring 2009-11-18 14:22:30 UTC
Does this happen at a step during the installation from a CD or DVD?

Is your experience related to previous issues?
- Bug #461595: Check handling of installation sources during distribution update
- Bug #478024: Repositories were not saved after proceed
Comment 2 Lukas Ocilka 2009-11-23 09:21:48 UTC
No logs attached, closing as CANTFIX.
Comment 3 Michael Schröder 2009-11-23 09:54:54 UTC
Huh, how about setting it to NEEDINFO first?

Why do you need logs anyway? This is about function BackUpAllTargetSources of clients/pkg_finish.ycp from the yast2-packager package. Relevant part of logs:

2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:49 These repos currently exist on a target: ["KDE:KDE4:UNSTABLE:Desktop.repo", "openSUSE 11.1-0.repo", "openSUSE:Tools.repo", "repo-debug.repo", "repo-oss.repo", "FATE.repo", "openSUSE Fa
ctory.repo", "repo-source.repo", "openSUSE 11.2-0.repo", "repo-non-oss.repo", "repo-update.repo"]
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/KDE:KDE4:UNSTABLE:Desktop.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/openSUSE 11.1-0.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/openSUSE:Tools.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/repo-debug.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/repo-oss.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/FATE.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/openSUSE Factory.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/repo-source.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/openSUSE 11.2-0.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/repo-non-oss.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:74 Removing target repository /etc/zypp/repos.d/repo-update.repo
2009-11-17 11:55:24 <1> f229.suse.de(3452) [YCP] clients/pkg_finish.ycp:82 All old repositories were removed from the target
Comment 4 Lukas Ocilka 2009-11-23 10:14:40 UTC
It seems to be correct. Please, attach YaST logs and not only the 'relevant part'. Thanks in advance.
Comment 5 Michael Schröder 2009-11-23 10:25:51 UTC
Could you please read the initial description of this bug?
Comment 6 Michael Schröder 2009-11-23 10:28:35 UTC
Created attachment 328930 [details]
y2log
Comment 7 Lukas Ocilka 2009-11-24 12:52:30 UTC
This is actually the relevant part:
2009-11-17 11:55:23 <1> f229.suse.de(3452) [Pkg] clients/inst_extrasources.ycp:192 Pkg Builtin called: SourceSaveAll

Bad luck, it cannot be fixed.
Comment 8 Michael Schröder 2009-11-24 13:44:47 UTC
Argh, what are you talking about? Please read the initial description:

This is about BackUpAllTargetSources():
- it removes old repos instead of disabling them
- it removes them by just deleting the .repo file instead of calling libzypp
  to do the job.
Comment 9 Lukas Ocilka 2009-11-24 14:10:41 UTC
1.) During the initial stage of update, client inst_upgrade_urls is called
    and correctly registers previously used repositories, e.g.,
    KDE:KDE4:UNSTABLE:Desktop
2.) Later, at the end of the installation, pkg_finish.ycp calls
    inst_extrasources which adds the repositories defined by product.
    Repositories are then saved by Pkg::SourceSaveAll. You can see, for
    instance KDE:KDE4:UNSTABLE:Desktop being saved.
3.) Then a backup of configuration of repositories is done, configurations
    are removed and Pkg::SourceSaveAll is called to finally save the
    "current" configuration. It's actually a mistake that #3 is called after
    #2 - it should be vice versa. Anyway, saving all the sources dumps
    only the newly added repositories.

The real issue seems to be that Pkg::SourceSaveAll does something different in #3 then it does in #2.

Lado, please, check what has happened there.
Comment 10 Lukas Ocilka 2009-11-24 14:13:12 UTC
Of course, libzypp is intentionally not used to remove the old
configurations, the issue is that they "are not old".
Comment 11 Ladislav Slezák 2010-11-11 14:27:18 UTC
I just have tested update from 11.2 to 11.3 - during the initial workflow I have changed the "remove" state in the repository overview to "disabled" (so the old repositories and not removed but kept in disabled state).

After update the old 11.2 repositories were present in the system in disabled state, except one repo that was missing completely.

This is a bug in inst_upgrade_urls.ycp - it removes repo with "ID: 0" from the list of upgraded repos. (I guess because it doesn't want to remove the repo which is used for update, see line 1012. The ids are assigned starting from 0, maybe this is the problem...)

Also after going back from the upgrade proposal the first repo is marked as "remove" in upgrade repo dialog (although I set it to "disabled" originally).

Reassigning to Lukas to fix inst_upgrade_urls.ycp
Comment 12 Ladislav Slezák 2010-11-11 14:30:33 UTC
Created attachment 399700 [details]
y2log from update to 11.3

The most important is this part:

2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:946 Checking repo: $["alias":"download.opensuse.org-non-oss", "autorefresh":false, "enabled":true, "id":"ID: 0", "initial_url_stat
us":"removed", "keeppackages":false, "name":"Main Repository (NON-OSS)", "new_status":"disabled", "type":"yast2", "url":"http://download.opensuse.org/distribution/11.2/repo/non-oss/"]
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:983 Source to add disabled: ID: 0
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:946 Checking repo: $["alias":"openSUSE 11.2-0", "autorefresh":false, "enabled":true, "id":"ID: 1", "initial_url_status":"removed",
 "keeppackages":false, "name":"openSUSE 11.2-0", "new_status":"disabled", "type":"yast2", "url":"http://fallback.suse.cz/netboot/find/openSUSE-11.2-DVD-x86_64"]
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:983 Source to add disabled: ID: 1
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:946 Checking repo: $["alias":"download.opensuse.org-update", "autorefresh":true, "enabled":true, "id":"ID: 2", "initial_url_status
":"removed", "keeppackages":false, "name":"Main Update Repository", "new_status":"disabled", "type":"rpm-md", "url":"http://download.opensuse.org/update/11.2/"]
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:983 Source to add disabled: ID: 2
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:946 Checking repo: $["alias":"download.opensuse.org-oss", "autorefresh":false, "enabled":true, "id":"ID: 3", "initial_url_status":
"removed", "keeppackages":false, "name":"Main Repository (OSS)", "new_status":"disabled", "type":"yast2", "url":"http://download.opensuse.org/distribution/11.2/repo/oss/"]
2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:983 Source to add disabled: ID: 3

So there are 4 disabled repos, but then only 3 are actually used:

2010-11-11 09:21:00 <1> dhcp40.suse.cz(2979) [YCP] clients/inst_upgrade_urls.ycp:593 Add ["ID: 1", "ID: 2", "ID: 3"] disabled repos
Comment 13 Ladislav Slezák 2010-11-11 14:32:38 UTC
Lukas, see comment #11.
Comment 14 Lukas Ocilka 2011-01-07 09:48:14 UTC
Entered as a new feature:

FATE #311045: Old-repositories handling during upgrade (inst_upgrade_urls) needs rewriting