La DSDL simplifie grandement la mise en oeuvre d'un détecteur de pannes en fournissant un modèle prédéfini. Une méthode Monitor_start démarre le détecteur de pannes, sous le contrôle du gestionnaire de processus, lorsque la ressource démarre sur un noeud. Le détecteur de pannes fonctionne en boucle tant que la ressource est exécutée sur le noeud. La logique de haut niveau d'un détecteur de pannes de la DSDL est la suivante :
La fonction scds_fm_sleep() utilise la propriété Thorough_probe_interval pour déterminer l'intervalle de temps entre les détections. Tout échec du processus de l'application détecté par le gestionnaire de processus au cours de cet intervalle entraîne un redémarrage de la ressource.
La sonde elle-même renvoie une valeur qui indique la gravité des échecs : de 0 en l'absence d'échec à 100 en cas d'échec total.
Cette valeur est envoyée à la fonction scds_action(), qui conserve un historique des échecs cumulatifs dans l'intervalle de la propriété Retry_interval.
La fonction scds_action() indique ce qu'il faut faire en cas d'échec :
Si la gravité de l'échec cumulatif est inférieure à 100, ne faites rien.
Si la valeur 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émarrages est supérieur à la valeur de la propriété Retry_count dans l'intervalle spécifié par Retry_interval, procédez au basculement du service de données.