feat: Use deadline-based process timeouts (#1343)

This commit is contained in:
Kroese
2026-07-28 15:22:47 +02:00
committed by GitHub
parent 3c7c3ca1b1
commit ec12039f43
2 changed files with 13 additions and 15 deletions
+4 -5
View File
@@ -82,7 +82,8 @@ waitForSocket() {
local socket="$1"
local exit_code="$2"
local pid cnt=0
local timeout=5 pid
local deadline=$((SECONDS + timeout))
while [ ! -S "$socket" ]; do
@@ -91,14 +92,12 @@ waitForSocket() {
exit "$exit_code"
fi
sleep 0.1
cnt=$((cnt + 1))
if (( cnt > 50 )); then
if (( SECONDS >= deadline )); then
error "Failed to create qemu-host socket: $socket"
exit "$exit_code"
fi
sleep 0.1
done
return 0
+9 -10
View File
@@ -136,14 +136,13 @@ isAlive() {
waitPid() {
local i=0
local pid="$1"
local timeout="${2:-10}"
local deadline=$((SECONDS + timeout))
while [ -n "$pid" ] && isAlive "$pid"; do
(( SECONDS >= deadline )) && return 1
sleep 0.2
i=$((i + 1))
(( i >= timeout * 5 )) && return 1
done
return 0
@@ -151,16 +150,16 @@ waitPid() {
waitPidFile() {
local i=0 pid
local pid
local file="$1"
local timeout="${2:-10}"
local deadline=$((SECONDS + timeout))
! readPidFile pid "$file" && return 0
while [ -s "$file" ] && isAlive "$pid"; do
(( SECONDS >= deadline )) && return 1
sleep 0.2
i=$((i + 1))
(( i >= timeout * 5 )) && return 1
done
rm -f -- "$file"
@@ -183,19 +182,19 @@ pKill() {
fWait() {
local i=0
local name="$1"
local timeout="${2:-10}"
local deadline=$((SECONDS + timeout))
[ -z "$name" ] && return 0
while pgrep -f -l "$name" >/dev/null; do
sleep 0.2
i=$((i + 1))
if (( i >= timeout * 5 )); then
if (( SECONDS >= deadline )); then
warn "Timed out while waiting for process: $name"
break
fi
sleep 0.2
done
return 0