DSDL asume la parte más compleja del proceso de implementación de un supervisor de fallos al proporcionar un modelo predeterminado. El método Monitor_start inicia el supervisor de fallos bajo el control de PMF al iniciarse el recurso en el nodo. El supervisor de fallos se ejecuta en un bucle mientras el recurso se está ejecutando en el nodo. La lógica de alto nivel del 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 en el proceso de la aplicación detectado por PMF durante este intervalo provocará el reinicio del recurso.
El análisis devuelve un valor que indica la gravedad de los fallos, desde 0 (ningún fallo) hasta 100 (fallo completo).
El valor devuelto por el análisis se envía a la función scds_action(), que mantiene un historial de fallos acumulativos en el intervalo especificado en la propiedad Retry_interval.
La función scds_action() determina los pasos que deben llevarse a cabo en caso de producirse un fallo de la siguiente forma:
Si el fallo acumulativo está por debajo de 100, no hay que hacer nada.
Si, por el contrario, alcanza el valor 100 (fallo completo), debe reiniciarse 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 durante el tiempo especificado por Retry_interval, debe realizarse una recuperación ante fallos del servicio de datos.