77 lines
2.5 KiB
Bash
77 lines
2.5 KiB
Bash
#!/usr/bin/bash
|
|
# Verify Dragonfly keys have TTL set after LMCache write
|
|
# Usage: kubectl run dragonfly-ttl-check --rm -it --image=redis:7-alpine --restart=Never --overrides='{"spec":{"podAnnotations":{"k8s.v1.cni.cncf.io/networks":"[{\"name\":\"ipoib-network-dragonfly\",\"ips\":[\"10.66.0.101/16\"]}]"}}}' -- ./check-ttl.sh 10.66.0.100 6379
|
|
#
|
|
# Or just drop into redis-cli:
|
|
# kubectl run dragonfly-cli --rm -it --image=redis:7-alpine --restart=Never --overrides='...' -- redis-cli -h 10.66.0.100 -p 6379
|
|
|
|
set -e
|
|
|
|
HOST="${1:-10.66.0.100}"
|
|
PORT="${2:-6379}"
|
|
|
|
echo "=== Connecting to Dragonfly at ${HOST}:${PORT} ==="
|
|
echo ""
|
|
|
|
# 1. Write a test key with TTL
|
|
echo "--- Writing test key with TTL=60s ---"
|
|
redis-cli -h "$HOST" -p "$PORT" SET lmcache:ttl:testkey "hello_ttl" EX 60
|
|
echo ""
|
|
|
|
# 2. Check TTL on our test key
|
|
echo "--- TTL on test key (should be ~60, not -1) ---"
|
|
TTL=$(redis-cli -h "$HOST" -p "$PORT" TTL lmcache:ttl:testkey)
|
|
echo "TTL = ${TTL}s"
|
|
if [ "$TTL" = "-1" ]; then
|
|
echo "FAIL: Key has no TTL (would persist forever)"
|
|
else
|
|
echo "OK: Key has TTL set"
|
|
fi
|
|
echo ""
|
|
|
|
# 3. Find LMCache keys and check their TTLs
|
|
echo "--- Scanning for LMCache keys and checking TTLs ---"
|
|
# Dragonfly/Redis SCAN - look for keys matching common LMCache patterns
|
|
KEYS=$(redis-cli -h "$HOST" -p "$PORT" SCAN 0 COUNT 100 | tail -n +2)
|
|
|
|
if [ -z "$KEYS" ]; then
|
|
echo "No keys found yet. Make sure LMCache is running and has stored some chunks."
|
|
echo "Then re-run this check."
|
|
else
|
|
NO_TTL_COUNT=0
|
|
WITH_TTL_COUNT=0
|
|
for KEY in $KEYS; do
|
|
TTL=$(redis-cli -h "$HOST" -p "$PORT" TTL "$KEY")
|
|
if [ "$TTL" = "-1" ]; then
|
|
echo " NO TTL: ${KEY}"
|
|
NO_TTL_COUNT=$((NO_TTL_COUNT + 1))
|
|
else
|
|
echo " TTL=${TTL}s: ${KEY}"
|
|
WITH_TTL_COUNT=$((WITH_TTL_COUNT + 1))
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "--- Summary ---"
|
|
echo "Keys WITH TTL: ${WITH_TTL_COUNT}"
|
|
echo "Keys WITHOUT TTL: ${NO_TTL_COUNT}"
|
|
|
|
if [ "$NO_TTL_COUNT" -gt 0 ]; then
|
|
echo ""
|
|
echo "WARNING: ${NO_TTL_COUNT} keys have no TTL and will persist forever."
|
|
echo "This means LMCache was either:"
|
|
echo " 1. Written before remote_ttl was configured (old keys)"
|
|
echo " 2. Written by a connector that doesn't support TTL (resp://)"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "--- Dragonfly INFO memory ---"
|
|
redis-cli -h "$HOST" -p "$PORT" INFO memory | grep -E "used_memory_human|maxmemory_human|used_memory_peak_human"
|
|
|
|
# Cleanup test key
|
|
redis-cli -h "$HOST" -p "$PORT" DEL lmcache:ttl:testkey > /dev/null 2>&1
|
|
|
|
echo ""
|
|
echo "Done."
|