Michael Andres changed bug 1096803
What Removed Added
Assignee zypp-maintainers@forge.provo.novell.com lslezak@suse.com

Comment # 8 on bug 1096803 from
@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


You are receiving this mail because: