🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónReintentos, idempotencia y orden de eventos
5 tareas · 40 min · Principiante
Un aviso bien firmado puede seguir haciendo daño si llega dos veces o si llega tarde. Los proveedores reintentan cuando no reciben respuesta a tiempo, y la red no promete que lo que salió primero llegue primero. Trasteos Corotos acreditó saldo de más a dos clientes y despachó un camión con un trasteo ya reembolsado, todo con avisos auténticos. Tienes el manejador, la exportación de entregas del proveedor, el registro de la aplicación y el estado final de los pedidos.
Objetivo de la sala
Un aviso bien firmado puede seguir haciendo daño si llega dos veces o si llega tarde. Los proveedores reintentan cuando no reciben respuesta a tiempo, y la red no promete que lo que salió primero llegue primero. Trasteos Corotos acreditó saldo de más a dos clientes y despachó un camión con un trasteo ya reembolsado, todo con avisos auténticos. Tienes el manejador, la exportación de entregas del proveedor, el registro de la aplicación y el estado final de los pedidos.Casi todos los emisores de webhooks prometen entregar cada aviso al menos una vez, no exactamente una vez. Si el receptor no responde con un código de éxito dentro del plazo, el emisor no sabe si el aviso se procesó o no, y lo vuelve a mandar. Desde su lado es la decisión correcta: perder un pago aprobado es peor que repetirlo.
La consecuencia es que los duplicados no son un fallo raro del proveedor, sino el comportamiento normal, y la defensa vive en el receptor. Un manejador es idempotente cuando procesar el mismo aviso una o diez veces deja el sistema igual. Se consigue con el identificador del evento: se registra con una restricción de unicidad antes de aplicar efectos, y si ya existe, se responde éxito sin volver a aplicarlos.
Responde para continuar
El proveedor reenvía un aviso que el receptor ya había aplicado. ¿Qué debería pasar?
Ver pista de ayuda
Responder con error solo provoca otro reintento.
Abre el laboratorio. Lee manejador-avisos.js con el reloj en la mano: qué hace antes de responder y cuánto tarda, frente al plazo que espera el proveedor según el encargo. Después busca en entregas-proveedor.txt los eventos con más de un intento y confirma en registro-aplicacion.txt cuántas veces se aplicó cada uno.
Responde para continuar
¿Qué evento de reembolso se acreditó tres veces en el saldo del cliente? Escribe su identificador.
Ver pista de ayuda
Cada intento que se quedó sin respuesta igual terminó de ejecutarse del lado de la aplicación.
Para el informe, el alcance se mide en pesos. Suma lo que se acreditó de más: por cada evento de reembolso, las acreditaciones que sobran respecto a la única que correspondía.
Responde para continuar
¿Cuánto saldo a favor se acreditó de más en total por las entregas repetidas? Escribe solo la cifra, sin puntos.
Ver pista de ayuda
Son dos eventos de reembolso con más de una acreditación cada uno.
El orden es el segundo problema. El manejador copia en el pedido el estado que trae el aviso, sin preguntarse si es más nuevo que el que ya tiene. En la exportación del proveedor hay una columna que dice cuándo se creó cada evento, distinta de la hora en que se envió cada intento. Busca un pedido cuyos avisos llegaron en orden distinto al de su creación y mira en estado-pedidos.txt cómo quedó.
Responde para continuar
¿Qué pedido quedó como pagado, con camión despachado, aunque el proveedor lo había reembolsado después de aprobarlo?
Ver pista de ayuda
Uno de sus avisos falló durante un despliegue y se reintentó después de que llegara el siguiente.
Hay tres causas encadenadas: el trabajo lento antes de responder provoca los reintentos, la falta de registro del identificador convierte cada reintento en dinero, y copiar el estado del aviso sin compararlo deja que uno viejo pise a uno nuevo.
Responde para continuar
¿Qué conjunto de cambios corrige las tres causas?
Ver pista de ayuda
Para el orden, compara la fecha de creación del evento con la del último aplicado o consulta al proveedor el estado actual.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.