| #!/bin/sh |
| |
| RETRY_INTERVAL=5 # Interval between retries in seconds |
| elapsed=0 # Elapsed time |
| |
| check_redis() { |
| host=$1 |
| port=$2 |
| while [ $elapsed -lt $TOTAL_RETRY_TIME ]; do |
| echo "Checking Redis at $host:$port... Elapsed time: ${elapsed}s" |
| if nc -z -w1 $TIMEOUT $host $port > /dev/null 2>&1; then |
| echo "Redis is up at $host:$port!" |
| return 0 |
| else |
| echo "Redis is down at $host:$port. Retrying in $RETRY_INTERVAL seconds." |
| sleep $RETRY_INTERVAL |
| elapsed=$((elapsed + RETRY_INTERVAL)) |
| fi |
| done |
| echo "Failed to connect to Redis at $host:$port after $TOTAL_RETRY_TIME seconds." |
| return 1 |
| } |
| |
| # For parsing and checking connections |
| parse_and_check() { |
| url=$1 |
| clean_url=${url#redis://} |
| host=$(echo $clean_url | cut -d':' -f1) |
| port=$(echo $clean_url | cut -d':' -f2) |
| check_redis $host $port |
| } |
| |
| # Main |
| if [ -n "$OAUTH2_PROXY_REDIS_CLUSTER_CONNECTION_URLS" ]; then |
| echo "Checking Redis in cluster mode..." |
| echo "$OAUTH2_PROXY_REDIS_CLUSTER_CONNECTION_URLS" | tr ',' '\n' | while read -r addr; do |
| parse_and_check $addr || exit 1 |
| done |
| elif [ -n "$OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS" ]; then |
| echo "Checking Redis in sentinel mode..." |
| echo "$OAUTH2_PROXY_REDIS_SENTINEL_CONNECTION_URLS" | tr ',' '\n' | while read -r addr; do |
| parse_and_check $addr || exit 1 |
| done |
| elif [ -n "$OAUTH2_PROXY_REDIS_CONNECTION_URL" ]; then |
| echo "Checking standalone Redis..." |
| parse_and_check "$OAUTH2_PROXY_REDIS_CONNECTION_URL" || exit 1 |
| else |
| echo "Redis configuration not specified." |
| exit 1 |
| fi |
| |
| echo "Redis check completed." |