mirror of
https://github.com/systemd/systemd.git
synced 2024-10-29 21:55:36 +03:00
aaae822b37
When conditions fail on a service unit, a path unit can cause PID 1 to busy loop as it keeps trying to activate the service unit. To avoid this from happening, add a trigger limit to the path unit, identical to the trigger limit we have for socket units. Initially, let's start with a high limit and not make it configurable. If needed, we can add properties to configure the rate limit similar to the ones we have for socket units.
31 lines
1.4 KiB
Desktop File
31 lines
1.4 KiB
Desktop File
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
[Unit]
|
|
Description=TEST-63-ISSUE-17433
|
|
|
|
[Service]
|
|
ExecStartPre=rm -f /failed /testok
|
|
Type=oneshot
|
|
|
|
# Test that a path unit continuously triggering a service that fails condition checks eventually fails with
|
|
# the trigger-limit-hit error.
|
|
ExecStart=rm -f /tmp/nonexistent
|
|
ExecStart=systemctl start test63.path
|
|
ExecStart=touch /tmp/test63
|
|
# Make sure systemd has sufficient time to hit the trigger limit for test63.path.
|
|
ExecStart=sleep 2
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.service -P ActiveState)" = inactive'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.service -P Result)" = success'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.path -P ActiveState)" = failed'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.path -P Result)" = trigger-limit-hit'
|
|
|
|
# Test that starting the service manually doesn't affect the path unit.
|
|
ExecStart=rm -f /tmp/test63
|
|
ExecStart=systemctl reset-failed
|
|
ExecStart=systemctl start test63.path
|
|
ExecStart=systemctl start test63.service
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.service -P ActiveState)" = inactive'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.service -P Result)" = success'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.path -P ActiveState)" = active'
|
|
ExecStart=sh -x -c 'test "$(systemctl show test63.path -P Result)" = success'
|
|
ExecStart=sh -x -c 'echo OK >/testok'
|