mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-06 22:10:33 +01:00
The 'Before' dependency between NM-dispatcher and NM causes a deadlock when stopping the NM service. When terminating, NM wants to D-Bus activate NM-dispatcher to synchronously handle pre-down events; but NM-dispatcher start is ordered after NM shutdown due to the following behavior described in systemd.unit(5) man page: Given two units with any ordering dependency between them, if one unit is shut down and the other is started up, the shutdown is ordered before the start-up. It doesn't matter if the ordering dependency is After= or Before=, in this case. It also doesn't matter which of the two is shut down, as long as one is shut down and the other is started up; the shutdown is ordered before the start-up in all cases. So, NM is waiting NM-dispatcher to start and NM-dispatcher is queued by systemd, waiting that NM is stopped. The result is a 90 seconds delay, after which systemd kills NM and continues. The dependency was added so that during shutdown NM-dispatcher would be stopped after NM. I don't think it worked as expected because NM-dispatcher is not supposed to be active most of the times, and so it doesn't need a dependency that delays its stop after NM. This reverts commitacc335aad4. (cherry picked from commit105abf27c1)
15 lines
353 B
SYSTEMD
15 lines
353 B
SYSTEMD
[Unit]
|
|
Description=Network Manager Script Dispatcher Service
|
|
|
|
[Service]
|
|
Type=dbus
|
|
BusName=org.freedesktop.nm_dispatcher
|
|
ExecStart=@libexecdir@/nm-dispatcher
|
|
|
|
# We want to allow scripts to spawn long-running daemons, so tell
|
|
# systemd to not clean up when nm-dispatcher exits
|
|
KillMode=process
|
|
|
|
[Install]
|
|
Alias=dbus-org.freedesktop.nm-dispatcher.service
|
|
|