Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rhel-9.5: revert systemd boot time #537

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions doc/needs_restarting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,32 +35,6 @@ Description

Note that in most cases a process should survive update of its binary and libraries it is using without requiring to be restarted for proper operation. There are however specific cases when this does not apply. Separately, processes often need to be restarted to reflect security updates.

.. note::
Needs-restarting will try to guess the boot time using three different methods:

``UnitsLoadStartTimestamp``
D-Bus property on ``/org/freedesktop/systemd1``.
Works unless the system was not booted with systemd,
such as in (most) containers.
``st_mtime of /proc/1``
Reflects the time the first process was run after booting.
This works for all known cases except machines without
a RTC—they awake at the start of the epoch.
``/proc/uptime``
Seconds field of ``/proc/uptime`` subtracted from the current time.
Works for machines without RTC if the current time is reasonably correct.
Does not work on containers which share their kernel with the
host—there, the host kernel uptime is returned.


.. warning::
Some systems are configured to read the RTC time in the local time
zone. This mode cannot be fully supported. It will create various problems
with time zone changes and daylight saving time adjustments. The RTC time
is never updated, it relies on external facilities to maintain it. **If at
all possible, use RTC in UTC by calling** ``timedatectl set-local-rtc 0``.
See ``man timedatectl`` for more information.

-------
Options
-------
Expand Down
24 changes: 0 additions & 24 deletions plugins/needs_restarting.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,11 +215,6 @@ def get_boot_time():
We have two sources from which to derive the boot time. These values vary
depending on containerization, existence of a Real Time Clock, etc.
For our purposes we want the latest derived value.
- UnitsLoadStartTimestamp property on /org/freedesktop/systemd1
The start time of the service manager, according to systemd itself.
Seems to be more reliable than UserspaceTimestamp when the RTC is
in local time. Works unless the system was not booted with systemd,
such as in (most) containers.
- st_mtime of /proc/1
Reflects the time the first process was run after booting
This works for all known cases except machines without
Expand All @@ -230,25 +225,6 @@ def get_boot_time():
Does not work on containers which share their kernel with the
host - there the host kernel uptime is returned
"""
units_load_start_timestamp = None
try:
bus = dbus.SystemBus()
systemd1 = bus.get_object(
'org.freedesktop.systemd1',
'/org/freedesktop/systemd1'
)
props = dbus.Interface(
systemd1,
dbus.PROPERTIES_IFACE
)
units_load_start_timestamp = props.Get(
'org.freedesktop.systemd1.Manager',
'UnitsLoadStartTimestamp'
)
if units_load_start_timestamp != 0:
return int(units_load_start_timestamp / (1000 * 1000))
except dbus.exceptions.DBusException as e:
logger.debug("D-Bus error getting boot time from systemd: {}".format(e))

proc_1_boot_time = int(os.stat('/proc/1').st_mtime)
if os.path.isfile('/proc/uptime'):
Expand Down
Loading