There is currently no way to figure out a rate limit was hit on a unit, as the last result is stripped in order to keep reporting the first result, which is useful in case of a watchdog failure, which is the reason why it was changed as such. But rate limiting is also an important information to provide to users, so allow the Result property to reflect it when it happens.
18 lines
839 B
Bash
Executable File
18 lines
839 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
# Service doesn't enter the "failed" state
|
|
# Issue: https://github.com/systemd/systemd/issues/3166
|
|
|
|
systemctl --no-block start issue3166-fail-on-restart.service
|
|
active_state="$(systemctl show --value --property ActiveState issue3166-fail-on-restart.service)"
|
|
while [[ "$active_state" == "activating" || "$active_state" =~ ^(in)?active$ ]]; do
|
|
sleep .5
|
|
active_state="$(systemctl show --value --property ActiveState issue3166-fail-on-restart.service)"
|
|
done
|
|
systemctl is-failed issue3166-fail-on-restart.service || exit 1
|
|
[[ "$(systemctl show --value --property NRestarts issue3166-fail-on-restart.service)" -le 3 ]] || exit 1
|
|
[[ "$(systemctl show --value --property Result issue3166-fail-on-restart.service)" = "start-limit-hit" ]] || exit 1
|