@@ -140,11 +140,21 @@ func generateRedisShutdownConfigMap(rc *redisv1beta1.RedisCluster, labels map[st
140140 envSentinelHost := fmt .Sprintf ("REDIS_SENTINEL_%s_SERVICE_HOST" , strings .ToUpper (rc .Name ))
141141 envSentinelPort := fmt .Sprintf ("REDIS_SENTINEL_%s_SERVICE_PORT_SENTINEL" , strings .ToUpper (rc .Name ))
142142 shutdownContent := fmt .Sprintf (`#!/usr/bin/env sh
143- set -eou pipefail
144- master=$(redis-cli -h ${%s} -p ${%s} --csv SENTINEL get-master-addr-by-name mymaster | tr ',' ' ' | tr -d '\"' |cut -d' ' -f1)
143+ master=""
144+ response_code=""
145+ while [ "$master" = "" ]; do
146+ echo "Asking sentinel who is master..."
147+ master=$(redis-cli -h ${%s} -p ${%s} --csv SENTINEL get-master-addr-by-name mymaster | tr ',' ' ' | tr -d '\"' |cut -d' ' -f1)
148+ sleep 1
149+ done
150+ echo "Master is $master, doing redis save..."
145151redis-cli SAVE
146- if [[ $master == $(hostname -i) ]]; then
147- redis-cli -h ${%s} -p ${%s} SENTINEL failover mymaster
152+ if [ $master = $(hostname -i) ]; then
153+ while [ ! "$response_code" = "OK" ]; do
154+ response_code=$(redis-cli -h ${%s} -p ${%s} SENTINEL failover mymaster)
155+ echo "after failover with code $response_code"
156+ sleep 1
157+ done
148158fi` , envSentinelHost , envSentinelPort , envSentinelHost , envSentinelPort )
149159
150160 return & corev1.ConfigMap {
0 commit comments