🧠 Causas raíz#
- Operaciones no idempotentes con retries automáticos. El cliente, el proxy o el balanceador reintentan; el servidor no distingue el reintento del pedido nuevo.
- Check-then-act en vez de una operación atómica. La ventana entre mirar y escribir es todo el bug, y el código se ve razonable en la review.
- Tabla de idempotencia en memoria del proceso. Correcta con una réplica, incorrecta con dos — y el salto de una a dos casi nunca se prueba.
- Efecto lateral fuera de la transacción. El cargo en la base y el email en la cola, sin nada que los ate. Si el proceso muere en el medio, quedan desincronizados.
- Sin ventana de deduplicación. Una clave que vive para siempre es una tabla que crece para siempre; una que caduca demasiado rápido deja pasar reintentos tardíos.
Caso 16 · Idempotencia y efectos duplicados — ⬅️ README del caso · ⚖️ Comparativa de los 7 stacks
🗺️ Contexto · 🩺 Síntomas · 🔍 Diagnóstico · 🧠 Causas raíz · 🛠️ Opciones de solución · ⚖️ Trade-offs · 💼 Valor de negocio · 🚨 Postmortem