fix: rds handoff path

This commit is contained in:
Julian Sommer
2026-08-05 15:52:55 +10:00
parent 390afa2490
commit 5dd3af70eb
2 changed files with 42 additions and 1 deletions
+4 -1
View File
@@ -13,7 +13,6 @@ error_log="/var/log/rds-agent.log"
start_stop_daemon_args="--wait 2000"
AGENT_ENV="/etc/spinifex-rds/agent.env"
HANDOFF_ENV="${RDS_HANDOFF_DIR:-/run/spinifex-rds}/bootstrap.env"
# The agent retries indefinitely, so this only bounds how long the boot waits
# before letting rds-init fail visibly rather than hanging forever.
@@ -42,6 +41,10 @@ start_pre() {
}
start_post() {
# Resolve this after start_pre loads agent.env so custom handoff directories
# are shared by the agent, this wait, and rds-init.
HANDOFF_ENV="${RDS_HANDOFF_DIR:-/run/spinifex-rds}/bootstrap.env"
# `before rds-init` only orders the starts; rds-init needs the fetched config
# itself. The agent writes bootstrap.env last and renames it into place, so
# its appearance means the whole handoff is there.
@@ -0,0 +1,38 @@
#!/bin/sh
set -eu
SCRIPT_DIR=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)
CASE=$(mktemp -d)
trap 'rm -rf "${CASE}"' EXIT
source_time_handoff="${CASE}/source-time"
configured_handoff="${CASE}/configured"
mkdir -p "${configured_handoff}"
touch "${configured_handoff}/bootstrap.env"
printf 'RDS_HANDOFF_DIR=%s\n' "${configured_handoff}" >"${CASE}/agent.env"
# Simulate OpenRC sourcing the service before start_pre loads agent.env.
export RDS_HANDOFF_DIR="${source_time_handoff}"
# shellcheck source=rds-agent.initd
. "${SCRIPT_DIR}/rds-agent.initd"
export AGENT_ENV="${CASE}/agent.env"
export handoff_timeout=0
EEND_STATUS=
ebegin() { :; }
einfo() { :; }
eend() { EEND_STATUS=$1; }
start_pre
start_post
if [ "${HANDOFF_ENV}" != "${configured_handoff}/bootstrap.env" ]; then
echo "FAIL: handoff path did not use RDS_HANDOFF_DIR from agent.env" >&2
exit 1
fi
if [ "${EEND_STATUS}" != "0" ]; then
echo "FAIL: post-start wait did not find the configured handoff" >&2
exit 1
fi
echo "rds-agent.initd: all tests passed"