Handle demotion gate transport failures safely
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
5aa02fa065d1dba55486838fa4f0cd8eba982edaaf73cdc7d818223a09cbadc6 ocf/loxthelion/managed-container
|
5aa02fa065d1dba55486838fa4f0cd8eba982edaaf73cdc7d818223a09cbadc6 ocf/loxthelion/managed-container
|
||||||
10932919c4339b553c7c9dbf30b45a917c51c0a08f362e12678003d58b12fa82 ocf/loxthelion/managed-container.d/applications/postgresql/auth.sh
|
10932919c4339b553c7c9dbf30b45a917c51c0a08f362e12678003d58b12fa82 ocf/loxthelion/managed-container.d/applications/postgresql/auth.sh
|
||||||
61d64b4a3a15c354f101ef34c5dc0425723f4204207d359b5377d2b9f04f6b23 ocf/loxthelion/managed-container.d/applications/postgresql/demote.sh
|
61d64b4a3a15c354f101ef34c5dc0425723f4204207d359b5377d2b9f04f6b23 ocf/loxthelion/managed-container.d/applications/postgresql/demote.sh
|
||||||
03a8a903514d30e8bb6be04711b608652db0c4bc10bf2cf5c389a78ed044f646 ocf/loxthelion/managed-container.d/applications/postgresql/native_peers.sh
|
e111dfe454a6e1edd80edc0c303119e045e7c88fe77b69a2745e58a022d0d317 ocf/loxthelion/managed-container.d/applications/postgresql/native_peers.sh
|
||||||
bcfde96b98f4727a8c97d42a39b7c6ec925b1b89d17ef67cc58eb7bd67afbfae ocf/loxthelion/managed-container.d/applications/postgresql/notify.sh
|
bcfde96b98f4727a8c97d42a39b7c6ec925b1b89d17ef67cc58eb7bd67afbfae ocf/loxthelion/managed-container.d/applications/postgresql/notify.sh
|
||||||
957a5a72ed277d0216e070abb80733483be3d421b9fa488e27fdd75bb2919548 ocf/loxthelion/managed-container.d/applications/postgresql/peer_config.sh
|
957a5a72ed277d0216e070abb80733483be3d421b9fa488e27fdd75bb2919548 ocf/loxthelion/managed-container.d/applications/postgresql/peer_config.sh
|
||||||
5091bc554915d1450fe939f94c0b0a370fecdb2ae5db9c4f0f55c340c0145519 ocf/loxthelion/managed-container.d/applications/postgresql/plugin.sh
|
5091bc554915d1450fe939f94c0b0a370fecdb2ae5db9c4f0f55c340c0145519 ocf/loxthelion/managed-container.d/applications/postgresql/plugin.sh
|
||||||
@@ -24,7 +24,7 @@ a42bb59a058ffeb59c1baa96e403856910bbbaea98f9104ff93daf4b5970c780 postgres-host/
|
|||||||
deb09e3ae40629f43b262ba4f9a7ebf59a1dca3da9d8c94478f670aea28bd0e1 quadlet/postgres.container
|
deb09e3ae40629f43b262ba4f9a7ebf59a1dca3da9d8c94478f670aea28bd0e1 quadlet/postgres.container
|
||||||
04a125068677bbee6e71d313ca9d95d35faa32851b79de781cd7b9f466561445 quadlet/postgres.env.example
|
04a125068677bbee6e71d313ca9d95d35faa32851b79de781cd7b9f466561445 quadlet/postgres.env.example
|
||||||
38379bdee0e894160855f2e74b222b95a73eb76c394523d6fd1a46e0d57b8d6a tests/run-all.sh
|
38379bdee0e894160855f2e74b222b95a73eb76c394523d6fd1a46e0d57b8d6a tests/run-all.sh
|
||||||
9584b4f3e7187569de4988c7fdd5690cd49bda5913b74227f31985c6bc447009 tests/test-demote-database-gate.sh
|
a373c0560391a2d8f63c3ba31609ab16b219d9b532b4ab9f8aea6dc45de10555 tests/test-demote-database-gate.sh
|
||||||
22d3eb56e8cd3ae1a58e2616f44abd3818f79d7e5df55c1c158e36dca7c77f42 tests/test-demote-database-shadow.sh
|
22d3eb56e8cd3ae1a58e2616f44abd3818f79d7e5df55c1c158e36dca7c77f42 tests/test-demote-database-shadow.sh
|
||||||
5e5d4fdd2b6c7e0b8b146de7aad06c1f96b221a10fec525b00d40e0d85709fb0 tests/test-entrypoint-structure.sh
|
5e5d4fdd2b6c7e0b8b146de7aad06c1f96b221a10fec525b00d40e0d85709fb0 tests/test-entrypoint-structure.sh
|
||||||
2faee72cf2fdcbfa667c3e1c2a7aabc053b96a9b8127ff7440ddb717fd2dc314 tests/test-notify-daemon-shadow.sh
|
2faee72cf2fdcbfa667c3e1c2a7aabc053b96a9b8127ff7440ddb717fd2dc314 tests/test-notify-daemon-shadow.sh
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ mc_pg_demote_database_shadow()
|
|||||||
|
|
||||||
[ -n "${resource}" ] || return 0
|
[ -n "${resource}" ] || return 0
|
||||||
|
|
||||||
response="$(
|
if response="$(
|
||||||
timeout --kill-after=1s 5s \
|
timeout --kill-after=1s 5s \
|
||||||
python3 \
|
python3 \
|
||||||
"${MC_PROXY_CLIENT:-/usr/lib/ocf/resource.d/loxthelion/managed-container.d/proxy_client.py}" \
|
"${MC_PROXY_CLIENT:-/usr/lib/ocf/resource.d/loxthelion/managed-container.d/proxy_client.py}" \
|
||||||
@@ -48,8 +48,11 @@ mc_pg_demote_database_shadow()
|
|||||||
"demote.database" \
|
"demote.database" \
|
||||||
10 \
|
10 \
|
||||||
11
|
11
|
||||||
)"
|
)"; then
|
||||||
rc=$?
|
rc=0
|
||||||
|
else
|
||||||
|
rc=$?
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${rc}" -ne 0 ]; then
|
if [ "${rc}" -ne 0 ]; then
|
||||||
ocf_log warn \
|
ocf_log warn \
|
||||||
|
|||||||
@@ -3,9 +3,59 @@ set -euo pipefail
|
|||||||
|
|
||||||
ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
|
ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
|
||||||
FILE="$ROOT/ocf/loxthelion/managed-container.d/applications/postgresql/native_peers.sh"
|
FILE="$ROOT/ocf/loxthelion/managed-container.d/applications/postgresql/native_peers.sh"
|
||||||
|
FAKE="$(mktemp)"
|
||||||
|
|
||||||
grep -q 'MC_DEMOTE_DATABASE_GATE' "$FILE"
|
cleanup()
|
||||||
grep -q 'gate rejected demotion' "$FILE"
|
{
|
||||||
grep -q 'if ! mc_pg_demote_database_shadow' "$FILE"
|
rm -f "$FAKE"
|
||||||
|
}
|
||||||
|
|
||||||
echo "DEMOTE_DATABASE_GATE_TEST_PASS=1"
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
ocf_log()
|
||||||
|
{
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
export OCF_RESOURCE_INSTANCE=postgresql-ha
|
||||||
|
export MC_PROXY_CLIENT="$FAKE"
|
||||||
|
|
||||||
|
cat > "$FAKE" <<'EOF'
|
||||||
|
import json
|
||||||
|
print(json.dumps({
|
||||||
|
"ocf_rc": 1,
|
||||||
|
"ready": False,
|
||||||
|
"mutation": False,
|
||||||
|
}))
|
||||||
|
EOF
|
||||||
|
chmod 0755 "$FAKE"
|
||||||
|
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
. "$FILE"
|
||||||
|
|
||||||
|
unset MC_DEMOTE_DATABASE_GATE
|
||||||
|
mc_pg_demote_database_shadow
|
||||||
|
|
||||||
|
export MC_DEMOTE_DATABASE_GATE=true
|
||||||
|
|
||||||
|
if mc_pg_demote_database_shadow; then
|
||||||
|
echo "FAIL: mismatch was not gated"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat > "$FAKE" <<'EOF'
|
||||||
|
raise SystemExit(10)
|
||||||
|
EOF
|
||||||
|
chmod 0755 "$FAKE"
|
||||||
|
|
||||||
|
unset MC_DEMOTE_DATABASE_GATE
|
||||||
|
mc_pg_demote_database_shadow
|
||||||
|
|
||||||
|
export MC_DEMOTE_DATABASE_GATE=true
|
||||||
|
|
||||||
|
if mc_pg_demote_database_shadow; then
|
||||||
|
echo "FAIL: transport failure was not gated"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "DEMOTE_DATABASE_GATE_RUNTIME_TEST_PASS=1"
|
||||||
|
|||||||
Reference in New Issue
Block a user