En la empresa a que pertenezco, diponemos de un par de servidores de Discover que realizan mayormente tareas de descubrimiento en nas. Estos servidores están basados en Linux y, debido a esto y a que no deseamos cargar en exceso el trabajo de las nas, las tareas de descubrimiento no se realizan en paralelo sino que cada servidor ejecuta de forma secuencial las que tiene encomendadas.
La intención es poder utilizar la programación incluída en la definición de estas tareas para dejarlas automatizadas con una mínima o nula interacción manual, pero una lógica inexistente en las prioridades de ejecución de estas tareas lo impide.
Actualmente, cuando en la programación de las tareas de descubrimientos se marca la casilla "Pause Scan between these times:" y se inhabilita un horario, las tareas que se lanzaron pasan a estado "paused", tanto la que estaba siendo ejecutada como las que esperaban hacerlo cuando esta finalizara.
Cuando se alcanza la hora de volver a la actividad, puede ser que la tarea que estaba iniciada continúe o que lo haga cualquiera de las otras quedando una tarea iniciada y pausada y otra ejecutándose. Mas tarde, si las tareas son de suficiente volumen como para no haber terminado, cuando se vuelve a alcanzar la hora de pausa vuelven a pasar al estado "paused" todas ellas. De nuevo, cuando deben volver a activarse, se inicia una de ellas de forma aleatoria, de manera que, tras una serie de ciclos como los descritos, puede haber varias tareas iniciadas y ninguna finalizada tras varios días de trabajo del sistema.
La situación se agrava si la programación de las tareas tiene una periodicidad (por ejemplo diaria) que no permite alcanzar la finalización de todas las tareas definidas antes de que alguna de ellas deba volver a ejecutarse. En este caso, puede ocurrir incluso que una tarea inicada se quede en un estado inacabado mientras que otras tareas se han ejecutado y finalizado varias veces.
Puestos en contacto con el soporte del producto, se nos ha dicho que el inicio de una u otra tarea viene determinado por un complejo algoritmo en el que intervienen múltiples parámetros como errores, conectividad d e red, retrasos, denegación de accesos, etc.. En resumen, que no es posible controlar que la tarea de descubrimiento que salga del estado de pausa para continuar ejecutándose sea la que estaba iniciada para evitar que una tarea, que puede ser incremental, se mantenga pausada durante días después de haber comenzado a jecutarse.
Por este motivo, la idea presentada consiste en la implementación de las opciones siguientes:
1.- Una lógica que determine que siempre que una tarea haya comenzado a ejecutarse, tenga prioridad en volver a ejecución ante otras que, en el momento de arranque compitan con ella y no se hubieran iniciado con anterioridad.
2.- Una pantalla de gestión de la cola de tareas que permita establecer manualmente las prioridades de ejecución de las tareas de descubrimiento que compiten por iniciarse.
3.- Las dos anteriores.