DSDL absorbe una buena parte de la complejidad de implementar un supervisor de fallos, gracias a un modelo predeterminado. Un método Monitor_start ejecuta el supervisor de fallos, controlado por PMF, cuando el recurso se inicia en un nodo. El supervisor de fallos funciona en bucle mientras el recurso esté ejecutándose en el nodo. La lógica de alto nivel de un supervisor de fallos de DSDL es la siguiente:
La función scds_fm_sleep utiliza la propiedad Thorough_probe_interval para determinar el tiempo entre análisis. Cualquier fallo de proceso de una aplicación que detecte PMF en ese intervalo provoca un reinicio del recurso.
El análisis mismo devuelve un valor que indica la gravedad del fallo, de 0 (sin fallos) a 100 fallo total.
El valor de retorno de la sonda se envia a la función scds_action, que mantiene un histórico de fallos acumulativo dentro del intervalo de la propiedad Retry_interval.
La función scds_action determina lo que hay que hacer en caso de fallo, como se indica a continuación.
Si el fallo acumulativo está por debajo de 100, no hay que hacer nada.
Si el fallo acumulativo alcanza el valor de 100 (fallo total), se debe reiniciar el servicio de datos. Si se supera Retry_interval, hay que poner a cero el historial.
Si el número de reinicios supera el valor de la propiedad Retry_count, en el periodo que indica Retry_interval, se debe realizar una operación de recuperación de fallos del servicio de datos.