La BDSD simplifie considérablement la mise en oeuvre d'un système de détection des pannes en fournissant un modèle prédéfini. Une méthode Monitor_start lance le système de détection des pannes, sous le contrôle de la fonction PMF, lors du démarrage de la ressource sur un nœud. Ce système tourne en boucle tant que la ressource est exécutée sur le nœud. La logique de haut niveau d'un système de détection des pannes de la BDSD se présente comme suit :
La fonction scds_fm_sleep utilise la propriété Intervalle_sonde_complet pour déterminer l'intervalle de temps entre les détections. Tout échec du processus d'application déterminé par la fonction PMF lors de cet intervalle engendre le redémarrage de la ressource.
La détection elle-même renvoie une valeur indiquant la gravité des échecs : de 0 signifiant l'absence d'échec à 100 pour un échec total.
La valeur de retour de la détection est transmise à la fonction scds_action qui conserve un historique des échecs cumulatifs dans l'intervalle de la propriété Intervalles_nouvelles_tentatives.
La fonction scds_action détermine ce que vous devez faire en cas d'échec.
Si la gravité de l'échec cumulatif est inférieur à 100, ne faites rien.
Si la gravité de l'échec cumulatif atteint 100 (échec total), redémarrez le service de données. Si Intervalle_nouvelles_tentatives est dépassé, réinitialisez l'historique.
Si le nombre de redémarrage dépasse la valeur de la propriété Retry_count, dans le délai spécifié par Retry_interval, basculez le service de données.