#2150·garnet

`--fail-on-recovery-error true` 在没有可读的混合日志检查点时仍会提供不完整的 AOF 尾部

作者: nixxcz创建于 2026年9月17日更新于 2026年9月17日

#!/usr/bin/env bash set -euo pipefail suffix="$$" network="garnet-recovery-failopen-${suffix}" node="garnet-recovery-failopen-${suffix}" root="$(mktemp -d)" data="$root/data" image="ghcr.io/microsoft/garnet:2.1.8" client_image="Redis:7-alpine" mkdir -p
"$data"
"$root/pre-injection"
"$root/pre-boot"
"$root/post-boot" chmod 0777
"$root"
"$data"
"$root/pre-injection"
"$root/pre-boot"
"$root/post-boot" cleanup() { Docker rm -f "$node" >/dev/null 2>&1 || true Docker network rm "$network" >/dev/null 2>&1 || true echo "Captured data remains at: $root" } trap cleanup EXIT Docker network create "$network" >/dev/null start_node() { Docker run -d
--name "$node"
--network "$network"
--network-alias garnet
-v "$data:/data"
"$image"
--aof
--recover
--fail-on-recovery-error true
--logger-level Trace
--bind 0.0.0.0
--port 6379
--checkpointdir /data/checkpoints
--index 64m >/dev/null } wait_ready() { for attempt in $(seq 1 30); do if [ "$(Docker run --rm --network "$network" "$client_image"
Redis-cli -h garnet PING 2>/dev/null || true)" = PONG ]; then return 0 fi sleep 1 done return 1 } start_node wait_ready Docker run --rm --network "$network" "$client_image" sh -ec ' i=1 while [ "$i" -le 200 ]; do Redis-cli …

内容来源: microsoft/garnet