What | Removed | Added |
---|---|---|
Assignee | zypp-maintainers@forge.provo.novell.com | lslezak@suse.com |
@Ladislav: I'm assigning it to you as the log reveals some potential flaws in the ONECLICK workflow (empty commit) and also in yast2-pkg-bindings (explicit locks file load/store). Now as I know what ONECLICK is doing, I'm able to prevent the lock expansion reported here in libzypp. Nevertheless the workflow looks dubious and you may want to review it (or reassign it). In short: ONECLICK initially triggers a commit without having loaded target data into the pool. This would cause the locks to be cleared, if YAST would not unconditionally load/store the locks on top of libzypps handling. YAST however causes to write the locks expanded (~7000 single package locks rather than one globbing expression). If ONECLICK actually must perform an empty commit before installing the package, then it should at least lod the current target, so no setting get lost. More detailed: Y2log abstract from a one-click install (plus some extra '[zypp]' debug lines you usually don't see). [grep -i 'locks.cc\|HardLocksFile\|targetimpl.cc\|\[pkg\]' y2log] ONECLICK calls 'TargetInitialize /' (which does not yet load the Target into the pool!): > [Pkg] modules/OneClickInstallWorkerFunctions.rb:58 Pkg Builtin called: TargetInitialize > [Pkg] PkgFunctions.cc(zypp_ptr):100 Initializing Zypp library... > [zypp] HardLocksFile.h(HardLocksFile):50 /etc/zypp/locks > [zypp] HardLocksFile.h(HardLocksFile):51 0 -- 0 > [zypp] TargetImpl.cc(TargetImpl):695 Initialized target on / > [zypp] TargetImpl.cc(buildCache):850 Read cookie: /var/cache/zypp/solv/@System/cookie{- 0644 0/0 size 52} > [zypp] TargetImpl.cc(buildCache):857 Read cookie: /var/cache/zypp/solv/@System/cookie says: uptodate > [Pkg] modules/OneClickInstallWorkerFunctions.rb:60 Pkg Builtin called: SourceStartCache > [Pkg] PkgFunctions.cc(CreateRepoManager):225 Path to repository files: /etc/zypp/repos.d Now the following looks fishy to me: ONECLICK calls 'commit' without having loaded any repos or the target. This commits the active locks, language etc. settings, which are empty (unless YAST would explicitly provide values): > [Pkg] modules/PackageInstallation.rb:144 Pkg Builtin called: Commit > [Pkg] Package.cc(Commit):2384 Restricting commit only to medium number: 0 > [zypp] TargetImpl.cc(commit):1119 TargetImpl::commit(<pool>, CommitPolicy( DownloadInHeaps syncPoolAfterCommit )) > [zypp] TargetImpl.cc(commit):1145 Todo: CommitResult (total 0, done 0, error 0, skipped 0, updateMessages 0) > [zypp] HardLocksFile.h(setData):81 0 -- 0 > [zypp++] TargetImpl.cc(commit):1237 commit log file is set to: /var/log/zypp/history > [zypp] TargetImpl.cc(commit):1371 TargetImpl::commit(<list>CommitPolicy( DownloadInHeaps syncPoolAfterCommit ))0 > [zypp] TargetImpl.cc(buildCache):850 Read cookie: /var/cache/zypp/solv/@System/cookie{- 0644 0/0 size 52} > [zypp] TargetImpl.cc(buildCache):857 Read cookie: /var/cache/zypp/solv/@System/cookie says: uptodate > [zypp] TargetImpl.cc(commit):1342 TargetImpl::commit(<pool>, CommitPolicy( DownloadInHeaps syncPoolAfterCommit )) returns: CommitResu > [zypp] TargetImpl.cc(buildCache):850 Read cookie: /var/cache/zypp/solv/@System/cookie{- 0644 0/0 size 52} > [zypp] TargetImpl.cc(buildCache):857 Read cookie: /var/cache/zypp/solv/@System/cookie says: uptodate > [zypp] TargetImpl.cc(load):992 New cache built: false, force loading: true Reloading the target after commit: > [zypp] TargetImpl.cc(load):998 adding /var/cache/zy