El error persigue a la nueva región

  • Al mover el tráfico a North Virginia, los clientes siguieron reintentando todo el tráfico pendiente de las 3 horas anteriores 9:48
  • Analogía: desconectaste la tubería y la conectaste a otro destino, pero el grifo (los clientes) seguía enviando agua con más presión → ahora North Virginia es la región con problemas 10:23
  • North Virginia recibió 10× más tráfico del esperable por el error de reintentos 10:23
  • Origen concreto: el servicio de tokens de Copilot, que autentica a los agentes de IA usados en VS Code y otras plataformas de Microsoft; la afectación en Copilot/VS Code fue enorme 10:55
  • Fix: limitar el número de reintentos / la lógica de reintentos en ese servicio 10:55

Circuit breaker

  • Técnica muy usada en sistemas distribuidos: bloquear una parte de la infraestructura afectada para que no reciba tráfico 11:27
  • Aplicación en GitHub: el servicio de tokens de Copilot deja de llamar hacia abajo y devuelve directamente un 403, conteniendo el error en esa parte del sistema 11:50
  • Se hace en la capa de load balancer, que es muy barata: responde 403 a todo y da tiempo a arreglar lo de detrás. Analogía: los plomos de casa saltando ante una subida de tensión 12:20

Resultado

  • Circuit breaker + nueva lógica de reintentos en el gateway redujeron drásticamente el ratio de errores; hacia las 21 UTC el sistema se recuperó y volvieron todas las regiones a tráfico normal 12:46
  • Moraleja: mantener sistemas distribuidos es complejo, más aún con alta carga de lectura y escritura como GitHub 12:46
sequenceDiagram
  participant C as Clientes (VS Code / Copilot)
  participant LB as Load balancer (N. Virginia)
  participant T as Servicio tokens Copilot
  C->>LB: Reintentos acumulados (10× tráfico)
  LB->>T: Saturación
  Note over LB: Circuit breaker activado
  C->>LB: Petición
  LB-->>C: 403 inmediato
  Note over T: Fix de lógica de reintentos + recuperación