systemd-sysctl in Xenial is not obeying the order of the sysctls

Bug #1718444 reported by Philipp Kern on 2017-09-20
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
systemd (Ubuntu)
Medium
Unassigned
Xenial
Medium
Unassigned

Bug Description

[Impact]

 * sysctls are applied out of order

[Test Case]

 * Monitor that sysctls are applied in-order, instead of out of order / random order.

[Regression Potential]

 * Cherrypick of an upstream patch which is present in v232+ and in use in Ubuntu in later releases. The code changes are minimal, updating s/Hashmap/OrderedHashmap/ which is implemented and available in xenial's systemd.

https://github.com/systemd/systemd/commit/886cf982d3018f7451f0548dadbc05bd2d583bb6

[Other Info]

 * Original bug report.

systemd-sysctl in Xenial forces itself over procps by shipping a link for procps.service to systemd-sysctl.service. However, it does not obey the order both of the files and also of the sysctls within the files. Instead it uses a simple hashmap. As it turns out that's fixed upstream and systemd master uses an ordered hashmap because of this, which at least preserves order within single files. Traditionally files in sysctl.d have been prefixed with numbers to ensure an order and that's now completely non-deterministic on Xenial.

Relevant upstream commit: https://github.com/systemd/systemd/commit/886cf982d3018f7451f0548dadbc05bd2d583bb6

Note that conf_files_list_nulstr in master sorts the configuration files using strcmp, so even order of configuration files should be obeyed.

Philipp Kern (pkern) wrote :

This is fixed in v232 and up.

Changed in systemd (Ubuntu):
status: New → Fix Released
Changed in systemd (Ubuntu Xenial):
importance: Undecided → Medium
description: updated
Changed in systemd (Ubuntu Xenial):
status: New → In Progress

Hello Philipp, or anyone else affected,

Accepted systemd into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/229-4ubuntu21.2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-xenial to verification-done-xenial. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-xenial. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in systemd (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-xenial
Dimitri John Ledkov (xnox) wrote :

Use multipass to launch a xenial VM with

$ dpkg-query -W systemd
systemd 229-4ubuntu21.1

Execute
SYSTEMD_DEBUG_LEVEL=debug /lib/systemd/systemd-sysctl

A few times, to notice that the output is "jumpy" and the order of the error messages is unstable. Realising that the sorting / application of the sysctls is not performed in a stable order.

Upgraded to

$ dpkg-query -W systemd
systemd 229-4ubuntu21.2

Rerunning the above command again, and again, and again, shows unchanging output on the terminal, meaning the order of all the things that were attempted to be written is now stable.

tags: added: verification-done verification-done-xenial
removed: verification-needed verification-needed-xenial
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package systemd - 229-4ubuntu21.2

---------------
systemd (229-4ubuntu21.2) xenial; urgency=medium

  [ Dimitri John Ledkov ]
  * udev: Mark ndb devices as inactive until connected. (LP: #696435)
  * networkd: in dhcp, change UseMTU default to true, to accept DHCP provided MTU by default.
    (LP: #1717471)
  * sysctl: apply parameters in-order, instead of randomly. (LP: #1718444)
  * networkd: apply promote_secondaries, to make DHCP lease changes work.
    (LP: #1721223)
  * shutdown: sync filesystems, before going into a killing spree.
    (LP: #1722481)
  * sysctl: do not fail, when cannot apply sysctl changes due to read-only sysfs in containers.
    (LP: #1734409)
  * networkd,wait-online: add RequiredForOnline to mark mandatory/optional links for boot.
    (LP: #1737570)

  [ David Glasser ]
  * journald: don't reduce BurstRateLimit on low disk space (LP: #1732803)

 -- Dimitri John Ledkov <email address hidden> Wed, 21 Feb 2018 13:46:37 +0000

Changed in systemd (Ubuntu Xenial):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for systemd has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers