X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fpostgres%2Ftemplates%2Fbackup_server%2Fpostgres-make-base-backups.erb;h=4681527a7699a24e70d259553eff3436a5184fdd;hb=6f6bf1f4153dbc310053a3672a394e790357b534;hp=18046bbb97a87304bdc75c9f08bb5e9e3956500c;hpb=ed498450d07565df2d9d0a5566b1d701841b94a9;p=mirror%2Fdsa-puppet.git diff --git a/modules/postgres/templates/backup_server/postgres-make-base-backups.erb b/modules/postgres/templates/backup_server/postgres-make-base-backups.erb index 18046bbb9..4681527a7 100755 --- a/modules/postgres/templates/backup_server/postgres-make-base-backups.erb +++ b/modules/postgres/templates/backup_server/postgres-make-base-backups.erb @@ -55,6 +55,14 @@ log() { [ "$verbose" -gt 0 ] && echo "$*" logger -p daemon.info -t "$SELF" "$*" } +format_timedelta() { + local secs="$1"; shift + if [ "$secs" -ge 86400 ]; then + printf '%dd %02d:%02d:%02d\n' $(($secs/3600/24)) $(($secs/3600%24)) $(($secs/60%60)) $(($secs%60)) + else + printf '%02d:%02d:%02d\n' $(($secs/3600)) $(($secs/60%60)) $(($secs%60)) + fi +} if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then @@ -104,7 +112,7 @@ while read host port username cluster version; do delta=$(( now - mtime )) if [ "$delta" -lt "$MIN_WAIT" ]; then runme=0 - log "Skipping $host:$port $version/$cluster because last attempt was only ${delta}s ago." + log "Skipping $host:$port $version/$cluster because last attempt was only $(format_timedelta "${delta}") (< $(format_timedelta "${MIN_WAIT}")) ago." else if ! [ -e "$flagfilesuccess" ]; then runme=1 @@ -114,22 +122,22 @@ while read host port username cluster version; do delta=$(( now - mtime )) if [ "$delta" -lt "$MIN_WAIT_SUCCESS" ]; then runme=0 - log "Skipping $host:$port $version/$cluster because last success was only ${delta}s ago." + log "Skipping $host:$port $version/$cluster because last success was only $(format_timedelta "${delta}") (< $(format_timedelta "${MIN_WAIT_SUCCESS}")) ago." elif [ "$delta" -gt "$MAX_WAIT_SUCCESS" ]; then runme=1 - log "Planning to run $host:$port $version/$cluster because last success was ${delta}s ago." + log "Planning to run $host:$port $version/$cluster because last success was $(format_timedelta "${delta}") (>= $(format_timedelta "${MAX_WAIT_SUCCESS}")) ago." else # get a "randomish" but stable value for this backup run val=$(echo "$MYHOSTNAME-$host-$port-$mtime" | sha256sum | head -c 8) val=$((16#$val)) - valmod=$(($val % $DELTA_WAIT_SUCCESS)) - after_min=$((delta - MIN_WAIT_SUCCESS)) - if [ "$after_min" -gt "$valmod" ]; then - runme=1 - log "Planning to run $host:$port $version/$cluster because random computer says so ($after_min > $valmod)." - else + rnd_cuttoff=$(($val % $DELTA_WAIT_SUCCESS)) + age_after_min=$((delta - MIN_WAIT_SUCCESS)) + if [ "$age_after_min" -lt "$rnd_cuttoff" ]; then runme=0 - log "Skipping $host:$port $version/$cluster because random computer says wait ($after_min <= $valmod)." + log "Skipping $host:$port $version/$cluster because random computer says wait ($(format_timedelta "${age_after_min}") < $(format_timedelta "${rnd_cuttoff}") (< $(format_timedelta "${DELTA_WAIT_SUCCESS}"))) + $(format_timedelta "${MIN_WAIT_SUCCESS}")." + else + runme=1 + log "Planning to run $host:$port $version/$cluster because random computer says so ($(format_timedelta "${age_after_min}") >= $(format_timedelta "${rnd_cuttoff}"))." fi fi fi