경주 열차

로버트 G는 기차 칸이 예기치 않게 분리되는 여행 중단 사태를 겪었습니다. 그는 여정을 재예약해야 했고, 이로 인해 30분의 지연이 발생했습니다. 추가적인 불편을 피하기 위해 로버트는 기차 회사의 앱을 사용하여 다음 기차의 예약을 확보하고 확인을 받았습니다. 기다리는 동안 그는 커피를 마시며 순조로운 전환을 기대했습니다. 다음 기차에 탑승했을 때, 그는 같은 예약 좌석을 주장하는 다른 승객을 만났습니다. 두 승객 모두 동일한 좌석 예약과 동일한 타임스탬프를 보여주는 휴대폰 앱 확인서를 제시했습니다. 또한 이메일 확인서도 확인했는데, 이는 그들의 상충되는 예약을 더욱 뒷받침했습니다. 다행히 기차는 만석이 아니어서 모든 사람이 문제없이 좌석을 찾았습니다. 이 사건은 기차 회사의 예약 시스템에서 중요한 경쟁 상태(race condition)를 드러냈는데, 확인 및 예약 프로세스가 원자적(atomic)이지 않았던 것입니다. 저자는 무관심이나 다른 소프트웨어 문제의 압도적인 수로 인해 우선순위 부족으로 버그가 지속되고 있다고 추측합니다. 이 시스템은 확인 및 예약 작업이 단일하고 분할할 수 없는 작업으로 수행되지 않기 때문에 두 사용자가 동시에 같은 좌석을 예약할 수 있도록 허용하는 것으로 보입니다.