TL;DR — 요청 카운터로 재전송(replay)을 막고 있었는데, 같은 요청 둘이 동시에 들어오면 둘 다 통과했다. "읽어서 비교하고 → 쓴다" 사이에 다른 요청이 끼어들 수 있는 간격(TOCTOU)이 있었기 때문이다. 비교와 갱신을 한 번의 조건부 갱신으로 합쳐 해결했다.

배경

문제 (증상)

원인 분석

해결

비교와 갱신을 한 번의 원자적 연산으로 합쳤다.

결과