1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-27 10:25:37 +03:00

core/service: try to query for new main process's starttime

Currently, when service_set_main_pidref() is called
without specifying start_timestamp, exec_status_start()
always uses dual_timestamp_now(). This is not ideal,
though, as when the main pid changes halfway due to
e.g. sd_notify + MAINPID=, it's definitely spurious.
This commit is contained in:
Mike Yuan 2024-05-21 23:43:06 +08:00
parent 6fb97a85c7
commit f781292d6c
No known key found for this signature in database
GPG Key ID: 417471C0A40F58B3

View File

@ -214,6 +214,16 @@ static int service_set_main_pidref(Service *s, PidRef pidref_consume, const dual
if (!pidref_equal(&s->main_pid, &pidref)) {
service_unwatch_main_pid(s);
dual_timestamp pid_start_time;
if (!start_timestamp) {
usec_t t;
if (pidref_get_start_time(&pidref, &t) >= 0)
start_timestamp = dual_timestamp_from_boottime(&pid_start_time, t);
}
exec_status_start(&s->main_exec_status, pidref.pid, start_timestamp);
}