Merge branch 'fordsa' of https://git.adam-barratt.org.uk/git/mirror/dsa-puppet
[mirror/dsa-puppet.git] / modules / postgres / files / dsa-restart-all-idle-postgres
index 2f7ee90..078d500 100755 (executable)
@@ -3,7 +3,8 @@
 # Written by Peter Palfrader
 # Based on code by Tollef Fog Heen <tfheen@err.no> based on code by Peter Palfrader
 #
-# Restart all postgresql clusters when they do not have connections to them.
+# Restart all postgresql clusters that show up in dsa-check-libs when they do
+# not have connections to them.
 
 set -e
 set -u
@@ -40,14 +41,19 @@ handle_cluster() {
 
   pid="$(get_pidfile_value "$version" "$name")"
   while chk_net "$port" && [ "$pid" = "$(get_pidfile_value "$version" "$name")" ]; do
-    sleep 10
+    sleep 60
   done
   systemctl restart "postgresql@${version}-${name}.service"
 }
 
+tmpfile="$(tempfile)"
+trap "rm -f '$tmpfile'" EXIT
+/usr/lib/nagios/plugins/dsa-check-libs > "$tmpfile" || true
+
 pg_lsclusters -h | while read version name port status; do
   echo "$status" | grep -q --word-regexp online || continue
-  handle_cluster $version $name $port &
-done
+  pid="$(get_pidfile_value "$version" "$name")"
+  grep -q --word-regexp $pid "$tmpfile" || continue
 
-wait
+  handle_cluster $version $name $port
+done