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 Démarrage_détecteur 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 noeud. Ce système tourne en boucle tant que la ressource est exécutée sur le noeud. 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é Nombre_nouvelles_tentatives, dans le délai spécifié par Intervalle_nouvelles_tentatives, basculez le service de données.