group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #26629
[Bug 1789637] Re: Proper support for frontend lock
This bug was fixed in the package unattended-upgrades -
1.1ubuntu1.18.04.6
---------------
unattended-upgrades (1.1ubuntu1.18.04.6) bionic; urgency=medium
* Unlock for dpkg operations with apt_pkg.pkgsystem_unlock_inner() when it is
available. Also stop running when reacquiring the lock fails.
Thanks to Julian Andres Klode for original partial patch (LP: #1789637)
* Skip rebuilding python-apt in upgrade autopkgtests.
Python-apt has a new build dependency making the rebuilding as is failing
and the reference handling issue is worked around in unattended-upgrades
already. (LP: #1781586)
* Stop trying when no adjustment could be made and adjust package candidates
only to lower versions (LP: #1785093)
* Skip already adjusted packages from being checked for readjusting.
This makes it clearer that the recursion ends and can also be a bit quicker.
(LP: #1785093)
-- Balint Reczey <rbalint@xxxxxxxxxx> Tue, 02 Oct 2018 19:18:02 +0200
** Changed in: unattended-upgrades (Ubuntu Bionic)
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1789637
Title:
Proper support for frontend lock
Status in unattended-upgrades package in Ubuntu:
Fix Released
Status in unattended-upgrades source package in Xenial:
Confirmed
Status in unattended-upgrades source package in Bionic:
Fix Released
Bug description:
[Impact]
Apt and dpkg implemented the Frontend Locking API and unattended-
upgrades needs to adopt it to not leave the packaging system unlocked
while passing control to python-apt and dpkg to perform package
installations and removals. Leaving the packaging system unlocked
caused many crashes of u-u when other tools took the lock and in the
worse case let other package management tools operate on dpkg's
database breaking systems.
The change takes advantage of python-apt's new API and keeps the
frontend lock during the run of u-u and unlocks only the inner locks
for committing changes.
[Test case]
Run strace unattended-upgrades to upgrade several packages and check
that lock-frontend is acquired at the beginning and not released until
the end (not reacquired repeatedly).
Unfixed u-u's output is like this:
# strace unattended-upgrade --verbose --dry-run 2>&1 | grep lock
openat(AT_FDCWD, "/var/run/unattended-upgrades.lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 4
openat(AT_FDCWD, "/var/lib/dpkg/lock-frontend", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 5
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 6
openat(AT_FDCWD, "/var/lib/dpkg/lock-frontend", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 5
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 6
openat(AT_FDCWD, "/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 93
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 6
openat(AT_FDCWD, "/var/lib/dpkg/lock-frontend", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 5
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 6
openat(AT_FDCWD, "/var/lib/dpkg/lock-frontend", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 5
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 6
...
Fixed u-u's output is like that:
# strace unattended-upgrade --dry-run --verbose 2>&1 | grep lock
openat(AT_FDCWD, "/var/run/unattended-upgrades.lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 4
openat(AT_FDCWD, "/var/lib/dpkg/lock-frontend", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 8
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 10
openat(AT_FDCWD, "/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 57
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 10
openat(AT_FDCWD, "/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 69
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 10
openat(AT_FDCWD, "/var/cache/apt/archives/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 70
openat(AT_FDCWD, "/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 10
...
[Regression potential]
Incorrect lock API usage can make unattended-upgrades to crash, but it
is unlikely to hang since the lock handling operations are non-
blocking. Failing to reserve the locks can also cause problems by
allowing other package management tools to install packages in
parallel, but this problem existed in the past, too.
[Additional Info]
This is part of a wider series of changes for frontend locking
- dpkg (bug 1796081)
- apt (bug 1781169)
- python-apt (bug 1795407)
- packagekit (bug 1795614)
- unattended-upgrades (bug 1789637)
- aptdaemon (no bug filed yet)
Further details about frontend locking can be found in
https://lists.debian.org/debian-dpkg/2017/01/msg00044.html
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1789637/+subscriptions