]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: shorten service stop/abort timeouts for TEST-69-SHUTDOWN 29689/head
authorFrantisek Sumsal <frantisek@sumsal.cz>
Tue, 24 Oct 2023 10:41:54 +0000 (12:41 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Tue, 24 Oct 2023 10:51:03 +0000 (12:51 +0200)
In several Ubuntu CI jobs I noticed timeouts in TEST-69, which are
apparently caused by a very stubborn bash/login process:

$ journalctl -o short-monotonic --no-hostname --file artifacts/TEST-69-SHUTDOWN.journal
[ 2011.698430] systemd[1]: shutdown.target: starting held back, waiting for: veritysetup.target
[ 2011.698473] systemd[1]: sysinit.target: stopping held back, waiting for: user@0.service
[ 2045.884982] systemd[1]: systemd-oomd.service: Got notification message from PID 54 (WATCHDOG=1)
[ 2071.576424] systemd[1]: Received SIGCHLD from PID 65 (bash).
[ 2071.576941] systemd[1]: Child 65 (bash) died (code=killed, status=1/HUP)
[ 2071.577026] systemd[1]: session-13.scope: Child 65 belongs to session-13.scope.
[ 2071.577100] systemd[1]: session-13.scope: cgroup is empty
[ 2071.577249] systemd[1]: session-13.scope: Deactivated successfully.

$ journalctl -o short-monotonic --no-hostname --file artifacts/TEST-69-SHUTDOWN.journal _PID=65
[ 3038.661488] login[65]: ROOT LOGIN  on '/dev/pts/0'

Since, in this case, we really care only about the actual shutdown,
let's shorten the service stop/abort timeouts to let systemd SIGKILL all
remaining processes in the 60s `expect` window.

test/TEST-69-SHUTDOWN/test.sh

index c813b5534fb2fd4e2b3cc7131ad12ee3743c5664..8fdbaf81fe247ceb853a2f7227a3098cf283ad87 100755 (executable)
@@ -26,6 +26,16 @@ EOF
 test_append_files() {
     local workspace="${1:?}"
 
+    # Shorten the service stop/abort timeouts to let systemd SIGKILL stubborn
+    # processes as soon as possible, as we don't really care about them in this
+    # particular test
+    mkdir -p "$workspace/etc/systemd/system.conf.d"
+    cat >"$workspace/etc/systemd/system.conf.d/99-timeout.conf" <<EOF
+[Manager]
+DefaultTimeoutStopSec=30s
+DefaultTimeoutAbortSec=30s
+EOF
+
     inst /usr/bin/screen
     echo "PS1='screen\$WINDOW # '" >>"$workspace/root/.bashrc"
     echo 'startup_message off' >"$workspace/etc/screenrc"