Skip to content

Commit 391767a

Browse files
author
Amber
committed
fix(rabbitmq): derive restore archive stem from target path
1 parent b89b237 commit 391767a

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

addons/rabbitmq/dataprotection/restore.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,17 @@ set -Eeuo pipefail
33

44
DATA_DIR="${DATA_DIR:-/var/lib/rabbitmq}"
55
# Backup jobs inject DP_TARGET_POD_NAME. Volume-populator AsDataSource prepareData
6-
# may only inject DP_TARGET_RELATIVE_PATH (= pod identity / archive stem). Prefer
7-
# POD_NAME when present; otherwise accept RELATIVE_PATH so KB12 dataSource restore works.
8-
TARGET_POD_NAME="${DP_TARGET_POD_NAME:-${DP_TARGET_RELATIVE_PATH:?DP_TARGET_POD_NAME or DP_TARGET_RELATIVE_PATH is required}}"
6+
# may only inject DP_TARGET_RELATIVE_PATH (= target name / target pod name).
7+
# DP_BACKUP_BASE_PATH is already scoped to that relative path, so only its final
8+
# pod-name segment belongs in the archive key.
9+
if [ -n "${DP_TARGET_POD_NAME:-}" ]; then
10+
TARGET_POD_NAME="${DP_TARGET_POD_NAME}"
11+
else
12+
TARGET_RELATIVE_PATH="${DP_TARGET_RELATIVE_PATH:?DP_TARGET_POD_NAME or DP_TARGET_RELATIVE_PATH is required}"
13+
TARGET_POD_NAME="${TARGET_RELATIVE_PATH%/}"
14+
TARGET_POD_NAME="${TARGET_POD_NAME##*/}"
15+
: "${TARGET_POD_NAME:?DP_TARGET_RELATIVE_PATH must end with a target pod name}"
16+
fi
917
ARCHIVE_NAME="${TARGET_POD_NAME}.tar.zst"
1018

1119
[ -n "${DP_DATASAFED_BIN_PATH:-}" ] && export PATH="${PATH}:${DP_DATASAFED_BIN_PATH}"

addons/rabbitmq/scripts-ut-spec/backup_restore_contract_spec.sh

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ DATASAFED
143143
The stdout should include "restore prepareData completed"
144144
End
145145

146-
It "falls back to DP_TARGET_RELATIVE_PATH when volume-populator omits DP_TARGET_POD_NAME"
146+
It "uses only the pod-name stem from the volume-populator target relative path"
147147
When call bash -c '
148148
set -Eeuo pipefail
149149
restore_script="$1"
@@ -160,8 +160,8 @@ DATASAFED
160160
set -e
161161
case "$1" in
162162
list)
163-
# Archive key matches the relative path / pod identity injected by volume populator.
164-
printf "%s\n" "${DP_TARGET_RELATIVE_PATH}.tar.zst"
163+
test "${DATASAFED_BACKEND_BASE_PATH}" = "${EXPECTED_BACKUP_BASE_PATH}"
164+
printf "%s\n" "${EXPECTED_TARGET_POD_NAME}.tar.zst"
165165
;;
166166
pull)
167167
cat "${FAKE_ARCHIVE_PATH}"
@@ -178,8 +178,10 @@ DATASAFED
178178
unset DP_TARGET_POD_NAME || true
179179
PATH="${bin_dir}:${PATH}" \
180180
DATA_DIR="${data_dir}" \
181-
DP_TARGET_RELATIVE_PATH="rmq-br-5400-rabbitmq-2" \
182-
DP_BACKUP_BASE_PATH="/backup/base" \
181+
DP_TARGET_RELATIVE_PATH="rabbitmq/rmq-br-5400-rabbitmq-2" \
182+
DP_BACKUP_BASE_PATH="/backup/base/rabbitmq/rmq-br-5400-rabbitmq-2" \
183+
EXPECTED_BACKUP_BASE_PATH="/backup/base/rabbitmq/rmq-br-5400-rabbitmq-2" \
184+
EXPECTED_TARGET_POD_NAME="rmq-br-5400-rabbitmq-2" \
183185
FAKE_ARCHIVE_PATH="${tmp_dir}/payload.tar" \
184186
bash "${restore_script}"
185187
test -f "${data_dir}/restored.txt"

0 commit comments

Comments
 (0)