Troubleshooting de Republicación de tareas

De Plataforma COA Crowd
Saltar a: navegación, buscar

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.

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

https://layer-api-event-handler-service.autonomation.calidad-architect.com/v1/state/taskInfo?taskId={task_segment_uuid}

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:

https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.project_id%3D%22findep-produccion%22%0Aresource.labels.location%3D%22us-central1%22%0Aresource.labels.cluster_name%3D%22tijuana-istio-devops%22%0Aresource.labels.namespace_name%3D%22app-autonomation%22%0Alabels.k8s-pod%2Fapp%3D%22layer-api-event-handler-service%22%0Alabels.k8s-pod%2Fversion%3D%22v1%22%20severity%3E%3DDEFAULT%0AtextPayload%20:%20%22publishTask%22%20and%20textPayload%20:%20%22s-1-ac0ccae0-66e2-476a-a3fb-b8372a92ccd7%22;timeRange=2022-05-30T17:04:00.951Z%2F2022-05-31T14:04:00.951139Z;cursorTimestamp=2022-05-31T14:02:42.768101635Z?authuser=0&hl=es&project=findep-produccion

Consulta en GCP.jpg

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:


GET https://layer-api-event-handler-service.autonomation.calidad-architect.com/v1/state/getPriorityQueue?priority={prioridad}


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.


Si es que el elemento en cola existe, ahora eliminamos de la cola de prioridad con el siguiente endpoint:

PUT https://layer-api-event-bus-service.autonomation.calidad-architect.com/v1/redis/deleteTaskInQueue

Este endpoint recorrera todas las colas de prioridad en busca de elementos que esten perdidos, sin un hash correspondiente y los eliminara