From af150abf5795c0d0c34ed4822ca9a5d216b6e587 Mon Sep 17 00:00:00 2001
From: Nicolas Wavrant <nicolas.wavrant@nexedi.com>
Date: Wed, 7 Sep 2016 14:57:48 +0200
Subject: [PATCH] resilient: use pbs-status feed to check if notifier callbacks
 get stalled

---
 stack/resilient/buildout.cfg                |  4 ++--
 stack/resilient/instance-pull-backup.cfg.in | 10 +++++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/stack/resilient/buildout.cfg b/stack/resilient/buildout.cfg
index f60c87a91..e8aed934a 100644
--- a/stack/resilient/buildout.cfg
+++ b/stack/resilient/buildout.cfg
@@ -59,14 +59,14 @@ mode = 0644
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/pbsready-export.cfg.in
 output = ${buildout:directory}/pbsready-export.cfg
-md5sum = 2f08cfdc1955bad5bd06ba79ee5a5780
+md5sum = bf7f6b35b54ac10988cbbd4439e1391b
 mode = 0644
 
 [template-pull-backup]
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-pull-backup.cfg.in
 output = ${buildout:directory}/instance-pull-backup.cfg
-md5sum = 1fe040ac898aff363769a84125087f0c
+md5sum = 232fcad0892e56d62f45e79ec01c7c3e
 mode = 0644
 
 [template-replicated]
diff --git a/stack/resilient/instance-pull-backup.cfg.in b/stack/resilient/instance-pull-backup.cfg.in
index 658909498..36ac17aa8 100644
--- a/stack/resilient/instance-pull-backup.cfg.in
+++ b/stack/resilient/instance-pull-backup.cfg.in
@@ -13,6 +13,7 @@ parts =
   pbs-push-history-log
   backup-signature-link
   cron-pbs-status-feed
+  pull-push-stalled-promise
 
 ## Monitor for pbs
   monitor-base
@@ -139,7 +140,8 @@ status-item-directory = $${directory:notifier-status-items}
 
 [pbs-resilient-status-feed]
 recipe = slapos.cookbook:wrapper
-command-line = ${buildout:directory}/bin/generateFeed --output $${directory:monitor-resilient}/pbs-status-rss --status-item-path $${pbs:status-item-directory} --title "Status feed for $${instance-info-parameters:root-name}-PBS" --link $${pbs:log-url}
+command-line = ${buildout:directory}/bin/generatefeed --output $${:feed-path} --status-item-path $${pbs:status-item-directory} --title "Status feed for $${instance-info-parameters:root-name}-PBS" --link $${pbs:log-url}
+feed-path = $${directory:monitor-resilient}/pbs-status-rss
 wrapper-path = $${rootdirectory:bin}/resilient-genstatusrss.py
 
 [cron-pbs-status-feed]
@@ -286,6 +288,12 @@ symlink = $${pbs:rdiff-backup-data-folder}/restore.log = $${basedirectory:log}/p
 recipe = cns.recipe.symlink
 symlink = $${directory:pbs-backup}/proof.signature = $${directory:monitor-resilient}/backup.signature
 
+[pull-push-stalled-promise]
+recipe = slapos.cookbook:wrapper
+# time-buffer is 18h : cron for backup is run once a day - 6h of random sleep
+command-line = ${buildout:bin-directory}/check-feed-as-promise --feed-path $${pbs-resilient-status-feed:feed-path} --title --ok-pattern 'OK' --time-buffer 64800
+wrapper-path = $${basedirectory:promises}/stalled-pull-push
+
 #----------------
 #--
 #-- Publish instance parameters.
-- 
2.30.9