Troubleshooting de Republicación de tareas
En esta sección solucionaremos los temas mas comunes relacionados con errores en el layer-api-event-bus-service o el layer-api-event-handler-service causados por una caida de los servicios o de algún otro componente de la plataforma los cuales son consultados por cualquiera de estos 2 servicios.
Sumario
Casos donde se tiene que republicar
- El objeto de la cola de prioridad de elimino y no puede ser asignada
- La publicación de la tarea se hizo incorrectamente
Obtener información de tarea a republicar
Si el hash de la tarea aun sigue en redis podemos consultarla con el siguiente endpoint:
GET
En caso de que ya no este el hash de redis, se pueden consultar los logs de GCP para ver en que momento publico la tarea el event handler:
Donde se tiene que modificar el task_segment_uuid por el que se este buscando y tambien el periodo de tiempo de búsqueda.
Ubicar objeto en cola de prioridad
Para saber si el elemento no se asigno correctamente y se "perdio" el elemento en cola, podemos buscarlo en su respectiva cola de prioridad con el siguiente endpoint:
El dato de prioridad sale del hash de la tarea, en el campo "priority", y es un numero entre -2 y 3.
Y solamente hay que hacer una búsqueda manual del task_segment_uuid en la data que regresa el endpoint. Si no encontramos el task_segment_uuid significa que se "perdio" el elemento de la cola, o que la tarea esta asignada. Si esta aasignada, en el enpoint de taskInfo va a a aparecer el workerId diferente de null. En estos casos no se debe de proseguir con el proceso de republicacion, porque traeria consecuencias como doble asignacion o errores al terminar la tarea.
Eliminar objetos relacionados de REDIS
Para poder republicar una tarea hay que eliminar 2 objetos relacionados con la microtrea.
- Hash de tarea
- Elemento en la cola de prioridad
Con el endpoint de taskInfo de la sección anterior podemos saber si existe o no el elemento. ya que el servicio nos regresaría un elemento vacio en caso de que no exista. Primero hay que eliminar el Hash de la tarea, el cual se hace con el siguiente endpoint:
POST https://layer-api-event-bus-service.autonomation.calidad-architect.com/v1/redis/setTaskEstatusFake
Body:
{
"taskId" : {task_segment_uuid}
}
Con esto eliminamos el hash de la tarea, y podemos comprobando mandando a llamar el endpoint de taskInfo para cerciorarnos de eso.
PUT https://layer-api-event-bus-service.autonomation.calidad-architect.com/v1/redis/deleteTaskInQueue