IL-0377 Upstash · 2026-05-01database
QStash US 리전에서 예약 작업의 상태가 어긋나 일정이 사라지거나 되살아나고 두 번 실행됐다
Upstash 는 확장성 개선 작업의 하나로 US 리전의 QStash 예약 인프라를 새 아키텍처로 바꿨다. 전환하는 동안 새 예약 인프라가 일정 상태의 기준이 됐고, 옛 실행 경로는 폴백용으로 코드에 남아 있었다. 5월 1일 버그 때문에 시스템이 뜻하지 않게 트래픽을 옛 예약 경로로 되돌렸다. 옛 경로는 새 시스템과 따로 일정 변경을 받기 시작했고, 두 시스템의 상태가 갈라졌다. 그 결과 4월 24일부터 5월 1일 사이에 일정을 만들거나 고치거나 멈추거나 지운 일부 사용자의 일정 상태가 어긋났다. 변경이 반영되지 않거나, 멈춘 일정이 다시 돌거나, 지운 일정이 다시 나타나거나, 새 일정이 실행되지 않았고, 일부 작업은 두 번 실행됐다. 영향받은 사용자는 US 리전의 일부였고, 대부분의 일정은 장애 내내 정상으로 돌았다.
Upstash 는 5월 5일 14:24 UTC 에 문제를 알리고 마이그레이션이 끝나면 영향받은 일정이 정상으로 돈다고 했다. 원인을 찾은 뒤 새 예약 시스템을 다시 기준으로 세우고, 옛 시스템과 새 시스템의 데이터를 맞추고, 빠진 일정 변경을 새 인프라에 다시 넣고, 충돌을 풀었다. 데이터를 영영 잃지 않도록 일부 경우에는 멈췄거나 지웠던 일정을 되살렸다. 15:44 UTC 에 수정을 적용하고 지켜봤고, 21:31 UTC 에 주요 일정 기능이 정상으로 돌아왔다. 앞서 만든 일정이 제대로 전달되는지 확인한 뒤 5월 6일 08:05 UTC 에 해결로 닫았다.
- 심각도
- –
- 영향 범위
- QStash schedules in the US region of users who created, edited, paused or deleted schedules between 24 April and 1 May 2026: updates not applied, paused schedules active again, deleted schedules back, new schedules not running, some jobs executed twice
- 영향 사용자
- A limited number of users in the US region
- 지역
- US region (US-EAST-1)
- 감지까지
- –
- 복구까지
- –
증상
QStash US 리전에서 일부 사용자의 예약 작업이 이상하게 동작했다. 고친 일정이 반영되지 않았고, 멈춘 일정이 다시 돌았고, 지운 일정이 다시 나타났고, 새로 만든 일정이 실행되지 않았다.
영향은 2026년 4월 24일부터 5월 1일 사이에 일정을 만들거나 고치거나 멈추거나 지운 사용자에게 몰렸다. 그 기간에 일정을 바꾸지 않은 사용자의 일정은 장애 내내 정상으로 돌았다.
5월 5일 14:24 UTC 상태 페이지는 두 가지 증상을 알렸다. 일부 예약 작업이 두 번 실행될 수 있었고, 2026년 4월 24일부터 5월 2일 사이에 만든 일정은 실행되지 않고 있었다.
예약 인프라를 새 아키텍처로 전환한 뒤에 만든 일정은 복구되기 전에 잠시 실행이 멈췄을 수 있다.
원인
- 촉발
- 5월 1일 버그 때문에 시스템이 트래픽을 새 예약 인프라에서 옛 실행 경로로 되돌렸다. 옛 실행 경로는 전환하는 동안 폴백으로 쓰려고 코드에 남겨 둔 것이었다.
감지
–
조치
- 새 예약 시스템을 다시 일정 상태의 기준으로 세웠다.
- 옛 예약 시스템과 새 예약 시스템의 데이터를 맞췄다.
- 빠진 일정 변경을 새 인프라에 다시 넣었다.
- 사용자 데이터와 일정이 끊기지 않도록 두 시스템 사이의 충돌을 풀었다.
- 데이터를 영영 잃지 않도록 일부 경우에는 멈췄거나 지웠던 일정을 되살렸다.
후속 조치
- 전환이 끝나면 더는 쓰지 않는 폴백 실행 경로를 지운다.
- 시스템이 뜻하지 않게 폴백 경로로 넘어가면 막는 자동 장치와 알림을 더한다.
- 시스템 사이의 일관성 검증을 강화한다.
- 롤백과 데이터 맞추기 테스트를 넓힌다.
교훈
–
출처
- https://status.upstash.com/incidents/9vxb0srq33b0 · official-status · 보관본
관련 사례
–
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0377
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0377/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.